openclacky 0.7.8 β†’ 0.8.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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/.clacky/skills/gem-release/SKILL.md +33 -4
  3. data/CHANGELOG.md +38 -0
  4. data/docs/agent-first-ui-design.md +77 -0
  5. data/docs/openclacky_cloud_api_reference.md +584 -0
  6. data/docs/session-skill-invocation.md +69 -0
  7. data/lib/clacky/agent/session_serializer.rb +77 -0
  8. data/lib/clacky/agent/skill_manager.rb +3 -1
  9. data/lib/clacky/agent/system_prompt_builder.rb +19 -0
  10. data/lib/clacky/agent/tool_executor.rb +15 -2
  11. data/lib/clacky/agent.rb +10 -3
  12. data/lib/clacky/agent_config.rb +10 -10
  13. data/lib/clacky/brand_config.rb +444 -0
  14. data/lib/clacky/cli.rb +103 -3
  15. data/lib/clacky/default_skills/onboard/SKILL.md +151 -0
  16. data/lib/clacky/server/http_server.rb +388 -15
  17. data/lib/clacky/server/scheduler.rb +17 -4
  18. data/lib/clacky/server/web_ui_controller.rb +9 -0
  19. data/lib/clacky/tools/base.rb +11 -0
  20. data/lib/clacky/tools/browser.rb +212 -0
  21. data/lib/clacky/tools/edit.rb +3 -0
  22. data/lib/clacky/tools/file_reader.rb +14 -3
  23. data/lib/clacky/tools/glob.rb +6 -5
  24. data/lib/clacky/tools/grep.rb +4 -3
  25. data/lib/clacky/tools/run_project.rb +4 -2
  26. data/lib/clacky/tools/safe_shell.rb +7 -7
  27. data/lib/clacky/tools/shell.rb +6 -2
  28. data/lib/clacky/tools/trash_manager.rb +2 -2
  29. data/lib/clacky/tools/write.rb +3 -0
  30. data/lib/clacky/ui2/components/welcome_banner.rb +68 -18
  31. data/lib/clacky/utils/file_ignore_helper.rb +1 -1
  32. data/lib/clacky/version.rb +1 -1
  33. data/lib/clacky/web/app.css +589 -0
  34. data/lib/clacky/web/app.js +80 -13
  35. data/lib/clacky/web/brand.js +157 -0
  36. data/lib/clacky/web/index.html +178 -12
  37. data/lib/clacky/web/onboard.js +240 -0
  38. data/lib/clacky/web/sessions.js +321 -17
  39. data/lib/clacky/web/settings.js +151 -2
  40. data/lib/clacky/web/skills.js +168 -27
  41. data/lib/clacky/web/tasks.js +14 -35
  42. data/lib/clacky.rb +1 -0
  43. data/scripts/install.sh +106 -1
  44. metadata +23 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9b2a72212b8b9e8072acb09a055df1afdd8225ee81de41f11dce460a68ff1781
4
- data.tar.gz: e8048bb38dc4a8ae8c85937165e10a855f8642d6759c8a2a94aa336b084e4188
3
+ metadata.gz: 847578e565b36373d9941ed108df7b68a78a3b485681f22f606637f90f3f6a49
4
+ data.tar.gz: 638855b903c61169486422f5d791a3eb7a7b4751cdee5a3b757abaf4fdd32ff2
5
5
  SHA512:
6
- metadata.gz: '095710e060b7c29882eb128be1a4008281435c13af07e7da01ec9ad1af27c30e252eb19e77f557882628409058d504f29024ea0dbb396ed20d326b26cfe1925c'
7
- data.tar.gz: 2875ac5911322341be5fe396ad44a98e4cbcea51c95ed7d832e3978d5790542ca94ae0f065f6170484d9900be2f1ca190f6db0d25c14a33366f924f9d13a147d
6
+ metadata.gz: 981a682c39c603d101c7755e3bdeecf053519e2eb041120311a4877c2aac9370bbc24cf57ead31595636592eb75513c6844faf9418cf378bb1c767e506b560e0
7
+ data.tar.gz: f7cbdcadf728ddc1825d9f11827f3dc8843981005a59cb5851391580d3f91e25b7f2f32730b928702ea3ad638c54e7c2f2134d0d16d47173dd37816d51e290e5
@@ -190,10 +190,38 @@ To use this skill, simply say:
190
190
  - Commit CHANGELOG.md changes
191
191
  - Push to remote repository
192
192
 
193
- ### 7. Final Verification
194
- - Confirm the gem appears on RubyGems.org
195
- - Check that version information is correct
196
- - Verify installation works for end users
193
+ ### 7. Final Summary
194
+
195
+ Present a clear, user-facing release summary after all steps complete:
196
+
197
+ **Format:**
198
+ ```
199
+ πŸŽ‰ v{version} released successfully!
200
+
201
+ πŸ“¦ What's new for users:
202
+
203
+ **New Features**
204
+ - [translate each "Added" item into plain user-facing language]
205
+
206
+ **Improvements**
207
+ - [translate each "Improved" item into plain user-facing language]
208
+
209
+ **Bug Fixes**
210
+ - [translate each "Fixed" item into plain user-facing language]
211
+
212
+ πŸ”— Links:
213
+ - RubyGems: https://rubygems.org/gems/openclacky/versions/{version}
214
+ - GitHub Release: https://github.com/clacky-ai/open-clacky/releases/tag/v{version}
215
+
216
+ Install/upgrade: gem install openclacky
217
+ ```
218
+
219
+ **Rules for writing the summary:**
220
+ - Write from the user's perspective β€” what can they now do, or what problem is now fixed
221
+ - Avoid technical jargon (no "cursor-paginated", "frontmatter", "REST API" β€” explain what it means instead)
222
+ - Skip "More" / chore items unless they directly affect users
223
+ - Keep each bullet to one sentence, action-oriented
224
+ - Example translation: `fix: expand ~ in file system tools path arguments` β†’ "File paths starting with `~` (home directory) now work correctly in all file tools"
197
225
 
198
226
  ## Commands Used
199
227
 
@@ -248,6 +276,7 @@ gh release create vX.Y.Z \
248
276
  - CHANGELOG.md updated with release notes
249
277
  - GitHub Release created and visible at https://github.com/clacky-ai/open-clacky/releases
250
278
  - No build or deployment errors
279
+ - User-facing release summary presented at the end
251
280
 
252
281
  ## Error Handling
253
282
 
data/CHANGELOG.md CHANGED
@@ -7,6 +7,44 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.8.0] - 2026-03-06
11
+
12
+ ### Added
13
+ - White-label brand licensing system: customize the web UI with your own name, logo, colors, and skills via `brand_config.yml`
14
+ - Brand skills tab in the web UI with private badge, shown only when brand skills are configured
15
+ - Slash command prompt rule: skill invocations (e.g. `/skill-name`) are now expanded inside the agent at run time, enabling mid-session skill triggering
16
+
17
+ ### Improved
18
+ - Server-side brand name rendering eliminates the first-paint brand name flash in the web UI
19
+ - Collapsible tool call blocks in the web UI β€” long tool outputs are now grouped and collapsed by default
20
+ - `safe_shell` now catches `ArgumentError` in addition to `BadQuotedString` for more robust command parsing
21
+ - Eliminated `Dir.chdir` global state in session handling, fixing race conditions in concurrent sessions
22
+
23
+ ### Fixed
24
+ - Skill slash commands are now expanded inside `agent.run` so that `/onboard` and similar commands work correctly when triggered mid-session
25
+ - Observer state machine handles `awaiting` state transitions properly
26
+
27
+ ### More
28
+ - Disabled ClaudeCode `ANTHROPIC_API_KEY` environment variable fallback in `AgentConfig` for cleaner env isolation
29
+ - Updated gemspec, lockfile, and install script
30
+ - Added web asset syntax specs and brand config specs
31
+
32
+ ## [0.7.9] - 2026-03-07
33
+
34
+ ### Added
35
+ - Cursor-paginated message history in web UI for large session navigation
36
+ - `confirm_all` permission mode for WebUI human sessions
37
+ - Re-run onboard entry in settings panel
38
+
39
+ ### Fixed
40
+ - Expand `~` in file system tools path arguments (file_reader, glob, grep, write, edit)
41
+ - Sort sessions newest-first with scheduled sessions at bottom
42
+ - Tasks and skills sidebar items now static β€” no longer disappear on scroll
43
+ - Delete task now also removes associated schedules
44
+
45
+ ### More
46
+ - Add frontmatter (`name`, `description`, `disable-model-invocation`, `user-invocable`) to onboard skill
47
+
10
48
  ## [0.7.8] - 2026-03-06
11
49
 
12
50
  ### Added
@@ -0,0 +1,77 @@
1
+ # Agent-First UI Design Philosophy
2
+
3
+ > Guiding principle for all OpenClacky UI and feature design.
4
+
5
+ ---
6
+
7
+ ## Core Principle
8
+
9
+ **Conversation first, interactive cards when needed.**
10
+
11
+ Users interact with the Agent through natural language to accomplish everything. When conversation is inconvenient for structured input (e.g. dropdowns, multi-select, precise time picking), the Agent triggers an **interactive card** via the `request_user_feedback` tool β€” rendered by the frontend as a structured UI component. Cards are a complement to conversation, not a replacement.
12
+
13
+ ---
14
+
15
+ ## Two Interaction Modes
16
+
17
+ ### 1. Conversation (default)
18
+ User expresses intent in natural language, Agent understands and executes.
19
+
20
+ ```
21
+ User: Send me a daily standup summary every morning at 9
22
+ Agent: Done! Task created, runs Mon–Fri at 09:00 βœ…
23
+ ```
24
+
25
+ ### 2. Interactive Cards (when conversation falls short)
26
+ When the Agent needs structured input that's hard to express in free text, it calls `request_user_feedback`. The frontend renders this as an interactive card (dropdowns, radio buttons, time pickers, etc.).
27
+
28
+ ```
29
+ Agent calls request_user_feedback β†’ frontend renders a card:
30
+
31
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
32
+ β”‚ πŸ“‹ Confirm task settings β”‚
33
+ β”‚ Frequency: [Daily β–Ό] β”‚
34
+ β”‚ Time: [09:00 ] β”‚
35
+ β”‚ [βœ… Confirm] [Cancel] β”‚
36
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
37
+
38
+ User fills card β†’ structured data sent back to Agent β†’ execution continues
39
+ ```
40
+
41
+ ---
42
+
43
+ ## When to Use Cards
44
+
45
+ | Situation | Reason |
46
+ |-----------|--------|
47
+ | Choosing from a list of options | Easier than enumerating in chat |
48
+ | Date / time selection | Precise value, error-prone in free text |
49
+ | Sensitive input like API keys | Should not appear in conversation history |
50
+ | Collecting multiple fields at once | One card beats several back-and-forth questions |
51
+
52
+ Everything else: use conversation.
53
+
54
+ ---
55
+
56
+ ## What Should NOT Exist
57
+
58
+ - ❌ Persistent configuration form pages
59
+ - ❌ Fields that require users to understand technical details (cron expressions, agent IDs, etc.)
60
+ - ❌ More than 3 action buttons per list row
61
+ - ❌ Standalone "Create" form modals
62
+
63
+ ---
64
+
65
+ ## Role of UI Pages
66
+
67
+ UI pages are for **displaying state**, not for configuring things:
68
+
69
+ - βœ… Show task lists, run history, current status
70
+ - βœ… Minimal action set per row: β–Ά Run / ✎ Edit (opens conversation) / βœ• Delete
71
+ - ❌ No inline create/edit forms inside list pages
72
+
73
+ Clicking "Edit" opens an Agent conversation with context pre-filled. The Agent drives the modification flow from there.
74
+
75
+ ---
76
+
77
+ *Applies to all OpenClacky Web UI and feature design.*