collavre 0.4.0 → 0.5.0

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 (105) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/collavre/actiontext.css +73 -71
  3. data/app/assets/stylesheets/collavre/activity_logs.css +18 -45
  4. data/app/assets/stylesheets/collavre/comments_popup.css +131 -36
  5. data/app/assets/stylesheets/collavre/creatives.css +101 -51
  6. data/app/assets/stylesheets/collavre/dark_mode.css +221 -88
  7. data/app/assets/stylesheets/collavre/design_tokens.css +334 -0
  8. data/app/assets/stylesheets/collavre/mention_menu.css +13 -9
  9. data/app/assets/stylesheets/collavre/popup.css +57 -27
  10. data/app/assets/stylesheets/collavre/slide_view.css +6 -6
  11. data/app/assets/stylesheets/collavre/user_menu.css +4 -5
  12. data/app/components/collavre/plans_timeline_component.html.erb +2 -2
  13. data/app/controllers/collavre/admin/orchestration_controller.rb +9 -2
  14. data/app/controllers/collavre/admin/settings_controller.rb +199 -0
  15. data/app/controllers/collavre/comments_controller.rb +37 -161
  16. data/app/controllers/collavre/creatives_controller.rb +18 -58
  17. data/app/controllers/collavre/users_controller.rb +27 -2
  18. data/app/helpers/collavre/application_helper.rb +97 -0
  19. data/app/helpers/collavre/creatives_helper.rb +10 -202
  20. data/app/javascript/components/creative_tree_row.js +3 -2
  21. data/app/javascript/controllers/comment_controller.js +207 -4
  22. data/app/javascript/controllers/comments/form_controller.js +29 -0
  23. data/app/javascript/controllers/comments/presence_controller.js +13 -0
  24. data/app/javascript/controllers/creatives/tree_controller.js +2 -1
  25. data/app/javascript/controllers/link_creative_controller.js +29 -3
  26. data/app/javascript/lib/__tests__/html_code_block_wrapper.test.js +201 -0
  27. data/app/javascript/lib/html_code_block_wrapper.js +168 -0
  28. data/app/javascript/lib/utils/markdown.js +2 -1
  29. data/app/javascript/modules/creative_row_editor.js +5 -1
  30. data/app/javascript/utils/emoji_parser.js +21 -0
  31. data/app/jobs/collavre/ai_agent_job.rb +6 -2
  32. data/app/jobs/collavre/cron_action_job.rb +18 -6
  33. data/app/jobs/collavre/cron_scheduler_job.rb +112 -0
  34. data/app/models/collavre/comment/approvable.rb +50 -0
  35. data/app/models/collavre/comment/broadcastable.rb +119 -0
  36. data/app/models/collavre/comment/notifiable.rb +111 -0
  37. data/app/models/collavre/comment.rb +8 -258
  38. data/app/models/collavre/creative/describable.rb +86 -0
  39. data/app/models/collavre/creative/linkable.rb +77 -0
  40. data/app/models/collavre/creative/permissible.rb +103 -0
  41. data/app/models/collavre/creative.rb +3 -289
  42. data/app/models/collavre/orchestrator_policy.rb +1 -1
  43. data/app/models/collavre/system_setting.rb +27 -1
  44. data/app/models/collavre/user.rb +42 -0
  45. data/app/models/collavre/user_theme.rb +10 -0
  46. data/app/services/collavre/ai_agent/approval_handler.rb +110 -0
  47. data/app/services/collavre/ai_agent/message_builder.rb +129 -0
  48. data/app/services/collavre/ai_agent/review_handler.rb +70 -0
  49. data/app/services/collavre/ai_agent_service.rb +89 -214
  50. data/app/services/collavre/ai_client.rb +23 -4
  51. data/app/services/collavre/auto_theme_generator.rb +168 -50
  52. data/app/services/collavre/command_menu_service.rb +70 -0
  53. data/app/services/collavre/comment_move_service.rb +94 -0
  54. data/app/services/collavre/comments/action_executor.rb +10 -0
  55. data/app/services/collavre/comments/mcp_command.rb +1 -2
  56. data/app/services/collavre/creatives/create_service.rb +86 -0
  57. data/app/services/collavre/creatives/destroy_service.rb +41 -0
  58. data/app/services/collavre/creatives/index_query.rb +3 -0
  59. data/app/services/collavre/markdown_converter.rb +240 -0
  60. data/app/services/collavre/mention_parser.rb +63 -0
  61. data/app/services/collavre/orchestration/agent_context_builder.rb +24 -8
  62. data/app/services/collavre/orchestration/agent_orchestrator.rb +59 -10
  63. data/app/services/collavre/orchestration/loop_breaker.rb +12 -7
  64. data/app/services/collavre/orchestration/policy_resolver.rb +15 -1
  65. data/app/services/collavre/orchestration/scheduler.rb +4 -3
  66. data/app/services/collavre/system_events/context_builder.rb +1 -6
  67. data/app/services/collavre/tools/creative_batch_service.rb +107 -0
  68. data/app/services/collavre/tools/creative_update_service.rb +17 -12
  69. data/app/services/collavre/tools/cron_create_service.rb +17 -5
  70. data/app/views/admin/shared/_tabs.html.erb +2 -1
  71. data/app/views/collavre/admin/orchestration/show.html.erb +11 -0
  72. data/app/views/collavre/admin/settings/_system_tab.html.erb +138 -0
  73. data/app/views/collavre/admin/settings/_uiux_tab.html.erb +44 -0
  74. data/app/views/collavre/admin/settings/index.html.erb +11 -0
  75. data/app/views/collavre/admin/settings/uiux.html.erb +11 -0
  76. data/app/views/collavre/comments/_comment.html.erb +10 -5
  77. data/app/views/collavre/comments/_comments_popup.html.erb +1 -1
  78. data/app/views/collavre/creatives/_mobile_actions_menu.html.erb +0 -3
  79. data/app/views/collavre/creatives/_share_button.html.erb +0 -52
  80. data/app/views/collavre/creatives/_share_modal.html.erb +52 -0
  81. data/app/views/collavre/creatives/index.html.erb +5 -6
  82. data/app/views/collavre/shared/navigation/_panels.html.erb +2 -2
  83. data/app/views/collavre/user_themes/index.html.erb +7 -9
  84. data/app/views/collavre/users/_contact_management.html.erb +2 -1
  85. data/app/views/collavre/users/edit_ai.html.erb +7 -0
  86. data/app/views/collavre/users/index.html.erb +16 -1
  87. data/app/views/collavre/users/new_ai.html.erb +18 -8
  88. data/app/views/collavre/users/passkeys.html.erb +1 -1
  89. data/app/views/collavre/users/show.html.erb +1 -1
  90. data/app/views/layouts/collavre/slide.html.erb +8 -1
  91. data/config/locales/admin.en.yml +88 -0
  92. data/config/locales/admin.ko.yml +88 -0
  93. data/config/locales/ai_agent.en.yml +4 -2
  94. data/config/locales/ai_agent.ko.yml +4 -2
  95. data/config/locales/comments.en.yml +4 -1
  96. data/config/locales/comments.ko.yml +4 -1
  97. data/config/locales/orchestration.en.yml +8 -0
  98. data/config/locales/orchestration.ko.yml +8 -0
  99. data/config/locales/users.en.yml +12 -0
  100. data/config/locales/users.ko.yml +12 -0
  101. data/config/routes.rb +7 -1
  102. data/db/migrate/20260213044247_add_agent_conf_to_users.rb +5 -0
  103. data/lib/collavre/engine.rb +25 -0
  104. data/lib/collavre/version.rb +1 -1
  105. metadata +31 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 22776a6f9413458cb9ff5c5c9518b1291939beab2b387c6e1e4d7f557a8585c4
4
- data.tar.gz: 0dde98de3d1d7c8dc983df5ebcb89d6eb9d9851d5e8c473214def3bcdad7c954
3
+ metadata.gz: 9fa2404d51d4e3c83b1c475d2ceb48d2bc834193f825e25cfcb15f5d8dc1a3c7
4
+ data.tar.gz: 9139d284ca5dd900d79a048b299995558cfbc5dc6acf7324416fac394aa60982
5
5
  SHA512:
6
- metadata.gz: 495868ccfef0655e1de79cddb77cb7321ce50cbb26774fa13f45bd55cc0d1f76dd61e6c426b1f88234fdb2167ff7b757b4ef07ee9a96b932b6fa742121a8c177
7
- data.tar.gz: f2b130635ea439864cc07a6d4bac31b8a13a4b265659fbb1aae06450498d691c6fe3d9b55fbcd874cf23140716587bc16fd80d4c0214913aff0de7c0ff53d302
6
+ metadata.gz: 25d88e2068d1810640e9325ed5bcac9d1a07e8452f7843bb646b4d005314bd664f5b0247dbf92036954e688d98f12e9aef65e1ece13d841e07954619e2483339
7
+ data.tar.gz: 531f7331c316c8d8f1847bbbd6b0dfd386022a968fbdcbf9c0564b1d34b16599fa450841a140bf0619b12df683c3bc8a3cecb8d0b691a242aca3b5efbfcffcb5
@@ -3,49 +3,49 @@
3
3
  */
4
4
 
5
5
  .lexical-inline-editor {
6
- background: var(--color-section-bg, var(--color-bg));
6
+ background: var(--surface-section, var(--surface-bg));
7
7
  border-radius: 8px;
8
- padding: 0.5rem;
8
+ padding: var(--space-2);
9
9
  }
10
10
 
11
11
  .inline-edit-form-shell {
12
- background: var(--color-section-bg, var(--color-bg));
13
- border: 1px solid var(--color-border);
12
+ background: var(--surface-section, var(--surface-bg));
13
+ border: 1px solid var(--border-color);
14
14
  border-radius: 8px;
15
- padding: 0 0 1rem 0;
15
+ padding: 0 0 var(--space-3) 0;
16
16
  }
17
17
 
18
18
  .lexical-editor-shell {
19
19
  display: flex;
20
20
  flex-direction: column;
21
- gap: 0.5rem;
21
+ gap: var(--space-2);
22
22
  }
23
23
 
24
24
  .lexical-toolbar {
25
25
  display: flex;
26
26
  flex-wrap: wrap;
27
27
  align-items: center;
28
- gap: 0.25rem;
28
+ gap: var(--space-1);
29
29
  }
30
30
 
31
31
  .lexical-toolbar-color {
32
32
  position: relative;
33
33
  display: inline-flex;
34
34
  align-items: center;
35
- gap: 0.25rem;
35
+ gap: var(--space-1);
36
36
  }
37
37
 
38
38
  .lexical-toolbar-color__trigger {
39
39
  display: inline-flex;
40
40
  align-items: center;
41
- gap: 0.25rem;
41
+ gap: var(--space-1);
42
42
  }
43
43
 
44
44
  .lexical-toolbar-color__swatch {
45
45
  width: 0.9rem;
46
46
  height: 0.9rem;
47
- border: 1px solid var(--color-border);
48
- border-radius: 2px;
47
+ border: 1px solid var(--border-color);
48
+ border-radius: var(--radius-1);
49
49
  box-sizing: border-box;
50
50
  display: inline-block;
51
51
  }
@@ -59,18 +59,18 @@
59
59
  align-items: center;
60
60
  gap: 0.35rem;
61
61
  padding: 0.4rem 0.5rem;
62
- background: var(--color-bg);
63
- border: 1px solid var(--color-border);
62
+ background: var(--surface-bg);
63
+ border: 1px solid var(--border-color);
64
64
  border-radius: 6px;
65
- box-shadow: 0 6px 16px rgba(20, 24, 43, 0.14);
65
+ box-shadow: var(--shadow-3);
66
66
  }
67
67
 
68
68
  .lexical-toolbar-color__popover input[type="color"] {
69
69
  appearance: none;
70
70
  cursor: pointer;
71
71
  border: none;
72
- width: 2rem;
73
- height: 2rem;
72
+ width: var(--space-7);
73
+ height: var(--space-7);
74
74
  padding: 0;
75
75
  background: transparent;
76
76
  }
@@ -78,21 +78,21 @@
78
78
  .lexical-toolbar-btn--small {
79
79
  min-width: auto;
80
80
  padding: 0.2rem 0.4rem;
81
- font-size: 0.75rem;
81
+ font-size: var(--text-0);
82
82
  }
83
83
 
84
84
  .lexical-toolbar-btn {
85
85
  appearance: none;
86
- background: var(--color-btn-bg);
87
- border: 1px solid var(--color-border);
88
- border-radius: 4px;
89
- color: var(--color-btn-text);
86
+ background: var(--surface-btn);
87
+ border: 1px solid var(--border-color);
88
+ border-radius: var(--radius-1);
89
+ color: var(--text-on-btn);
90
90
  cursor: pointer;
91
91
  font-size: 0.85rem;
92
- font-weight: 600;
92
+ font-weight: var(--weight-6);
93
93
  line-height: 1.2;
94
- min-width: 2rem;
95
- padding: 0.25rem 0.4rem;
94
+ min-width: var(--space-7);
95
+ padding: var(--space-1) 0.4rem;
96
96
  text-align: center;
97
97
  transition: background 0.15s ease, border-color 0.15s ease;
98
98
  }
@@ -104,15 +104,15 @@
104
104
  }
105
105
 
106
106
  .lexical-toolbar-btn.active {
107
- background: var(--color-accent, #cbeefa);
108
- border-color: var(--color-accent-border, #7bc4e4);
109
- color: var(--color-accent-text, #03425f);
107
+ background: var(--color-active);
108
+ border-color: var(--color-accent-border);
109
+ color: var(--color-accent-text);
110
110
  }
111
111
 
112
112
  .lexical-toolbar-separator {
113
113
  align-self: stretch;
114
- border-left: 1px solid var(--color-border);
115
- margin-inline: 0.25rem;
114
+ border-left: 1px solid var(--border-color);
115
+ margin-inline: var(--space-1);
116
116
  }
117
117
 
118
118
  .lexical-editor-inner {
@@ -127,7 +127,7 @@
127
127
  }
128
128
 
129
129
  .lexical-placeholder {
130
- color: var(--color-muted, #8c93a3);
130
+ color: var(--text-muted);
131
131
  left: 0.75rem;
132
132
  pointer-events: none;
133
133
  position: absolute;
@@ -141,8 +141,8 @@
141
141
  .lexical-heading-h1,
142
142
  .lexical-heading-h2,
143
143
  .lexical-heading-h3 {
144
- font-weight: 600;
145
- margin: 0 0 0.5rem 0;
144
+ font-weight: var(--weight-6);
145
+ margin: 0 0 var(--space-2) 0;
146
146
  }
147
147
 
148
148
  .lexical-heading-h1 {
@@ -158,8 +158,8 @@
158
158
  }
159
159
 
160
160
  .lexical-quote {
161
- border-left: 0.25rem solid var(--color-border);
162
- color: var(--color-muted, #656c7b);
161
+ border-left: var(--space-1) solid var(--border-color);
162
+ color: var(--text-muted);
163
163
  margin: 0 0 0.75rem 0;
164
164
  padding-left: 0.75rem;
165
165
  }
@@ -175,13 +175,13 @@
175
175
  }
176
176
 
177
177
  .lexical-link {
178
- color: var(--color-link, #0366d6);
178
+ color: var(--color-link);
179
179
  text-decoration: underline;
180
180
  text-decoration-thickness: 1px;
181
181
  }
182
182
 
183
183
  .lexical-text-bold {
184
- font-weight: 600;
184
+ font-weight: var(--weight-6);
185
185
  }
186
186
 
187
187
  .lexical-text-italic {
@@ -198,7 +198,7 @@
198
198
 
199
199
  .lexical-text-code {
200
200
  background: rgba(135, 143, 161, 0.15);
201
- border-radius: 4px;
201
+ border-radius: var(--radius-1);
202
202
  font-family: ui-monospace, SFMono-Regular, SFMono, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
203
203
  font-size: 0.9em;
204
204
  padding: 0.1em 0.3em;
@@ -206,10 +206,10 @@
206
206
 
207
207
  .lexical-code-block {
208
208
  display: block;
209
- background: var(--color-code-bg, #f6f8fa);
210
- border: 1px solid var(--color-border);
209
+ background: var(--color-code-bg);
210
+ border: 1px solid var(--border-color);
211
211
  border-radius: 6px;
212
- color: var(--color-code-text, #1f2328);
212
+ color: var(--color-code-text);
213
213
  font-family: ui-monospace, SFMono-Regular, SFMono, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
214
214
  font-size: 0.9em;
215
215
  line-height: 1.5;
@@ -229,6 +229,7 @@
229
229
  white-space: inherit;
230
230
  }
231
231
 
232
+ /* stylelint-disable color-no-hex -- syntax highlight theme colors are intentionally hardcoded */
232
233
  .lexical-token-comment,
233
234
  .lexical-token-prolog,
234
235
  .lexical-token-doctype,
@@ -286,24 +287,25 @@
286
287
  .lexical-token-tag,
287
288
  .lexical-token-selector,
288
289
  .lexical-token-keyword {
289
- font-weight: 600;
290
+ font-weight: var(--weight-6);
290
291
  }
292
+ /* stylelint-enable color-no-hex */
291
293
 
292
294
  .lexical-attachment {
293
295
  position: relative;
294
296
  margin: 0.75rem 0;
295
297
  padding: 0.75rem;
296
- border: 1px solid var(--color-border);
298
+ border: 1px solid var(--border-color);
297
299
  border-radius: 12px;
298
- background: var(--color-surface, #fff);
299
- box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
300
+ background: var(--surface-section);
301
+ box-shadow: var(--shadow-1);
300
302
  }
301
303
 
302
304
  .lexical-attachment figure {
303
305
  margin: 0;
304
306
  display: flex;
305
307
  flex-direction: column;
306
- gap: 0.5rem;
308
+ gap: var(--space-2);
307
309
  }
308
310
 
309
311
  .lexical-attachment figure img {
@@ -313,7 +315,7 @@
313
315
  }
314
316
 
315
317
  .lexical-attachment.is-selected {
316
- border-color: var(--color-accent, #4f46e5);
318
+ border-color: var(--color-active);
317
319
  box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.2);
318
320
  }
319
321
 
@@ -323,10 +325,10 @@
323
325
  right: 0.45rem;
324
326
  border: 0;
325
327
  background: rgba(15, 23, 42, 0.75);
326
- color: #fff;
328
+ color: #fff; /* stylelint-disable-line color-no-hex -- white on dark overlay */
327
329
  width: 1.6rem;
328
330
  height: 1.6rem;
329
- border-radius: 999px;
331
+ border-radius: var(--radius-round);
330
332
  cursor: pointer;
331
333
  opacity: 0;
332
334
  transition: opacity 0.2s ease;
@@ -349,9 +351,9 @@
349
351
  padding: 0.75rem;
350
352
  border-radius: 12px;
351
353
  background: rgba(15, 23, 42, 0.6);
352
- color: #fff;
354
+ color: #fff; /* stylelint-disable-line color-no-hex -- white on dark overlay */
353
355
  font-size: 0.9rem;
354
- font-weight: 500;
356
+ font-weight: var(--weight-5);
355
357
  }
356
358
 
357
359
  .lexical-attachment__overlay--error {
@@ -363,10 +365,10 @@
363
365
  position: absolute;
364
366
  right: 0.55rem;
365
367
  bottom: 0.55rem;
366
- width: 16px;
367
- height: 16px;
368
- border-right: 2px solid var(--color-accent, #4f46e5);
369
- border-bottom: 2px solid var(--color-accent, #4f46e5);
368
+ width: var(--space-3);
369
+ height: var(--space-3);
370
+ border-right: 2px solid var(--color-active);
371
+ border-bottom: 2px solid var(--color-active);
370
372
  cursor: nwse-resize;
371
373
  opacity: 0.6;
372
374
  }
@@ -395,30 +397,30 @@
395
397
  content: "";
396
398
  position: absolute;
397
399
  inset: 20%;
398
- border-radius: 999px;
400
+ border-radius: var(--radius-round);
399
401
  border: 2px dashed rgba(100, 116, 139, 0.45);
400
402
  }
401
403
 
402
404
  .lexical-attachment__caption-input {
403
405
  width: 100%;
404
- border: 1px solid var(--color-border);
406
+ border: 1px solid var(--border-color);
405
407
  border-radius: 6px;
406
- padding: 0.5rem 0.6rem;
408
+ padding: var(--space-2) 0.6rem;
407
409
  font-size: 0.9rem;
408
- background: var(--color-surface, #fff);
410
+ background: var(--surface-section);
409
411
  color: inherit;
410
412
  }
411
413
 
412
414
  .lexical-attachment__caption-input:focus {
413
415
  outline: none;
414
- border-color: var(--color-accent, #4f46e5);
416
+ border-color: var(--color-active);
415
417
  box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.15);
416
418
  }
417
419
 
418
420
  .lexical-attachment__caption-size {
419
- margin-left: 0.5rem;
421
+ margin-left: var(--space-2);
420
422
  font-size: 0.8rem;
421
- color: var(--color-text-muted, #6b7280);
423
+ color: var(--text-muted);
422
424
  }
423
425
 
424
426
  .lexical-attachment__file {
@@ -438,7 +440,7 @@
438
440
  }
439
441
 
440
442
  .lexical-attachment__file-name {
441
- font-weight: 600;
443
+ font-weight: var(--weight-6);
442
444
  color: inherit;
443
445
  text-decoration: none;
444
446
  }
@@ -450,7 +452,7 @@
450
452
 
451
453
  .lexical-attachment__file-size {
452
454
  font-size: 0.85rem;
453
- color: var(--color-text-muted, #6b7280);
455
+ color: var(--text-muted);
454
456
  }
455
457
 
456
458
  /*
@@ -474,7 +476,7 @@
474
476
  }
475
477
 
476
478
  .trix-content blockquote {
477
- border: 0 solid var(--color-border);
479
+ border: 0 solid var(--border-color);
478
480
  border-left-width: 0.3em;
479
481
  margin-left: 0.3em;
480
482
  padding-left: 0.6em;
@@ -504,8 +506,8 @@
504
506
  font-size: 0.9em;
505
507
  padding: 0.5em;
506
508
  white-space: pre;
507
- background-color: var(--color-btn-bg);
508
- color: var(--color-text);
509
+ background-color: var(--surface-btn);
510
+ color: var(--text-primary);
509
511
  overflow-x: auto;
510
512
  }
511
513
 
@@ -544,18 +546,18 @@
544
546
  }
545
547
 
546
548
  .trix-content .attachment--preview .attachment__caption {
547
- color: #666;
549
+ color: var(--text-muted);
548
550
  font-size: 0.9em;
549
551
  line-height: 1.2;
550
552
  }
551
553
 
552
554
  .trix-content .attachment--file {
553
- color: var(--color-text);
555
+ color: var(--text-primary);
554
556
  line-height: 1;
555
557
  margin: 0 2px 2px 2px;
556
558
  padding: 0.4em 1em;
557
- border: 1px solid var(--color-border);
558
- border-radius: 5px;
559
+ border: 1px solid var(--border-color);
560
+ border-radius: var(--radius-2);
559
561
  }
560
562
 
561
563
  .trix-content .attachment-gallery {
@@ -574,4 +576,4 @@
574
576
  .trix-content .attachment-gallery.attachment-gallery--4 .attachment {
575
577
  flex-basis: 50%;
576
578
  max-width: 50%;
577
- }
579
+ }
@@ -1,7 +1,7 @@
1
1
  /* Activity Log Details */
2
2
  .comment-activity-log-block {
3
- margin-top: 4px;
4
- margin-bottom: 8px;
3
+ margin-top: var(--space-1);
4
+ margin-bottom: var(--space-2);
5
5
  }
6
6
 
7
7
  .comment-activity-log-block details>summary {
@@ -9,7 +9,7 @@
9
9
  }
10
10
 
11
11
  .comment-activity-log-block details>summary::marker {
12
- color: #ccc;
12
+ color: var(--border-color);
13
13
  }
14
14
 
15
15
  /* List container */
@@ -22,78 +22,51 @@
22
22
 
23
23
  /* Individual Item */
24
24
  .activity-log-item {
25
- background-color: #f9f9f9;
26
- border-radius: 4px;
27
- border: 1px solid #eee;
28
- padding: 8px;
29
- }
30
-
31
- @media (prefers-color-scheme: dark) {
32
- .activity-log-item {
33
- background-color: #2a2a2a;
34
- border-color: #444;
35
- }
25
+ background-color: var(--surface-bg);
26
+ border-radius: var(--radius-1);
27
+ border: 1px solid var(--border-color);
28
+ padding: var(--space-2);
36
29
  }
37
30
 
38
31
  .activity-log-summary {
39
32
  font-size: 0.9em;
40
- font-weight: 600;
41
- color: #555;
33
+ font-weight: var(--weight-6);
34
+ color: var(--text-muted);
42
35
  cursor: pointer;
43
36
  display: flex;
44
37
  justify-content: space-between;
45
38
  }
46
39
 
47
- @media (prefers-color-scheme: dark) {
48
- .activity-log-summary {
49
- color: #ccc;
50
- }
51
- }
52
-
53
40
  .activity-name {
54
- color: #333;
55
- }
56
-
57
- @media (prefers-color-scheme: dark) {
58
- .activity-name {
59
- color: #fff;
60
- }
41
+ color: var(--text-primary);
61
42
  }
62
43
 
63
44
  .activity-time {
64
45
  font-weight: normal;
65
- color: #999;
46
+ color: var(--text-muted);
66
47
  font-size: 0.85em;
67
48
  margin-left: 10px;
68
49
  }
69
50
 
70
51
  .activity-log-body {
71
- margin-top: 8px;
52
+ margin-top: var(--space-2);
72
53
  }
73
54
 
74
55
  .activity-log-yaml {
75
- background: #fff;
56
+ background: var(--surface-section);
76
57
  padding: 10px;
77
- border-radius: 4px;
78
- border: 1px solid #e0e0e0;
58
+ border-radius: var(--radius-1);
59
+ border: 1px solid var(--border-color);
79
60
  overflow-x: auto;
80
61
  font-family: monospace;
81
62
  font-size: 0.85em;
82
63
  white-space: pre-wrap;
83
64
  word-break: break-all;
84
- color: #333;
85
- }
86
-
87
- @media (prefers-color-scheme: dark) {
88
- .activity-log-yaml {
89
- background: #1e1e1e;
90
- border-color: #333;
91
- color: #d4d4d4;
92
- }
65
+ color: var(--text-primary);
93
66
  }
94
67
 
95
68
  .activity-log-empty {
96
- color: #888;
69
+ color: var(--text-muted);
97
70
  font-style: italic;
98
71
  padding: 10px;
99
- }
72
+ }