openclacky 1.3.8 → 1.3.10
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +40 -0
- data/lib/clacky/brand_config.rb +2 -1
- data/lib/clacky/default_extensions/coding/ext.yml +0 -1
- data/lib/clacky/default_extensions/ext-studio/agents/ext-developer/system_prompt.md +0 -1
- data/lib/clacky/default_extensions/ext-studio/api/handler.rb +31 -4
- data/lib/clacky/default_extensions/ext-studio/ext.yml +2 -3
- data/lib/clacky/default_extensions/ext-studio/panels/studio/view.js +221 -114
- data/lib/clacky/default_extensions/ext-studio/skills/ext-publish/SKILL.md +1 -2
- data/lib/clacky/default_extensions/general/ext.yml +0 -1
- data/lib/clacky/default_extensions/git/ext.yml +0 -1
- data/lib/clacky/default_extensions/meeting/ext.yml +0 -1
- data/lib/clacky/default_extensions/time_machine/ext.yml +0 -1
- data/lib/clacky/extension/api_extension.rb +11 -2
- data/lib/clacky/extension/dispatcher.rb +3 -2
- data/lib/clacky/extension/packager.rb +0 -6
- data/lib/clacky/locales/en.rb +1 -1
- data/lib/clacky/locales/zh.rb +1 -1
- data/lib/clacky/prompts/base.md +1 -1
- data/lib/clacky/server/http_server.rb +115 -7
- data/lib/clacky/version.rb +1 -1
- data/lib/clacky/web/app.css +123 -32
- data/lib/clacky/web/features/extensions/store.js +62 -9
- data/lib/clacky/web/features/extensions/view.js +54 -17
- data/lib/clacky/web/features/new-session/view.js +1 -1
- data/lib/clacky/web/i18n.js +16 -4
- data/lib/clacky/web/index.html +12 -6
- data/lib/clacky/web/sessions.js +32 -2
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: de09b43a446d08c592e1cd49deb914a3ff8c70375cf653f130d2aef9a1cd460e
|
|
4
|
+
data.tar.gz: 8030ce355abbe973c9b8294995744b5d4a96e3e38bfc494cb081621172619085
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bd57f31e2d97f1a98b10a775017e2c42ce6354e3fab4a87f9392e884ecca3a2ca3c3ec19d30e8adcb7d8498330446b3d80be787c3594e26b63d07a3e2349f9a7
|
|
7
|
+
data.tar.gz: 4b18ae8839c6bd9ab319c7077dca1bc61ea836d38152438215c61a524099c7e17213b0b76f37f8157621a7b168325042fe3137bf7d0b5e257a3609c58ca7c8fc
|
data/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,46 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
|
|
7
|
+
## [1.3.10] - 2026-07-09
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- Extension author shown inline in title row on extension cards
|
|
11
|
+
- Version input in publish modal — writes back to `ext.yml`, shows friendly Chinese error on version conflict
|
|
12
|
+
- Local extensions now included in the installed extensions list
|
|
13
|
+
|
|
14
|
+
### Improved
|
|
15
|
+
- Published extensions list in publish panel — better style and UX
|
|
16
|
+
- Publishing state, success label, and done button added to publish modal flow
|
|
17
|
+
- OSS CDN prioritized for latest version check (faster upgrade detection)
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
- Agent card description clamped to 2 lines; author hidden for built-in agents
|
|
21
|
+
- New-session scrollbar centering — use padding calc instead of max-width
|
|
22
|
+
- `file://` links with spaces and non-ASCII paths now render correctly (#350)
|
|
23
|
+
- Invalid API key error message improved to cover expired key case
|
|
24
|
+
- Local extension card in ext-studio now correctly appends action buttons
|
|
25
|
+
- Navigate back to list when extension detail fails to load
|
|
26
|
+
- Page reloads correctly after install/enable/disable/uninstall extension
|
|
27
|
+
- Enriched installed extensions with market data; shows unlisted badge
|
|
28
|
+
|
|
29
|
+
## [1.3.9] - 2026-07-08
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
- Installed filter tab in extension marketplace toolbar — quickly view only installed extensions
|
|
33
|
+
- Extension detail page UI improvements with better uninstall behavior
|
|
34
|
+
- `send_data` helper for API extensions to return binary file responses
|
|
35
|
+
|
|
36
|
+
### Improved
|
|
37
|
+
- Extension marketplace upload flow reworked — `origin` field removed, cleaner package structure
|
|
38
|
+
- Publish modal redesigned with meta block, improved layout, size, and animation
|
|
39
|
+
- Debug panel verify result now shown inline in action bar with auto-hide and friendly hint
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
- Zero-byte zip download when exporting extensions — binary responses now handled correctly
|
|
43
|
+
- Filter tab bottom padding adjusted for better underline spacing
|
|
44
|
+
- New-session advanced panel margin-top adjusted
|
|
45
|
+
- Debug panel detail no longer shows origin field
|
|
6
46
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
47
|
|
|
8
48
|
## [1.3.8] - 2026-07-07
|
data/lib/clacky/brand_config.rb
CHANGED
|
@@ -596,7 +596,7 @@ module Clacky
|
|
|
596
596
|
#
|
|
597
597
|
# Returns { success: true, extension: {...} } or
|
|
598
598
|
# { success: false, error: "...", already_exists: Boolean }.
|
|
599
|
-
def upload_extension!(ext_id, zip_data, force: false, status: nil, changelog: nil)
|
|
599
|
+
def upload_extension!(ext_id, zip_data, force: false, status: nil, changelog: nil, origin: 'marketplace')
|
|
600
600
|
identity = Clacky::Identity.load
|
|
601
601
|
return { success: false, error: "Device not bound to a platform account" } unless identity.bound?
|
|
602
602
|
|
|
@@ -607,6 +607,7 @@ module Clacky
|
|
|
607
607
|
end
|
|
608
608
|
|
|
609
609
|
fields = { "device_token" => identity.device_token }
|
|
610
|
+
fields["origin"] = origin.to_s if origin
|
|
610
611
|
fields["status"] = status.to_s if status
|
|
611
612
|
fields["changelog"] = changelog.to_s if changelog
|
|
612
613
|
|
|
@@ -48,12 +48,13 @@ class ExtStudioExt < Clacky::ApiExtension
|
|
|
48
48
|
|
|
49
49
|
# POST /api/ext/ext-studio/pack
|
|
50
50
|
# body: { ext_id }
|
|
51
|
-
# Packs a local container
|
|
51
|
+
# Packs a local container and streams the zip back as a file download.
|
|
52
52
|
post "/pack" do
|
|
53
53
|
ext_id = require_ext_id!
|
|
54
54
|
Dir.mktmpdir("clacky-ext-studio-pack") do |tmp|
|
|
55
|
-
res
|
|
56
|
-
|
|
55
|
+
res = Clacky::ExtensionPackager.pack(ext_id, out_dir: tmp)
|
|
56
|
+
zip_data = File.binread(res.path)
|
|
57
|
+
send_data(zip_data, content_type: "application/zip", filename: "#{res.ext_id}.zip")
|
|
57
58
|
end
|
|
58
59
|
rescue Clacky::ExtensionPackager::Error => e
|
|
59
60
|
error!(e.message, status: 422)
|
|
@@ -128,7 +129,33 @@ class ExtStudioExt < Clacky::ApiExtension
|
|
|
128
129
|
json(ok: true, ext_id: ext_id)
|
|
129
130
|
end
|
|
130
131
|
|
|
131
|
-
# POST /api/ext/ext-studio/
|
|
132
|
+
# POST /api/ext/ext-studio/set_version
|
|
133
|
+
# body: { ext_id, version }
|
|
134
|
+
# Writes the new version string back to the local ext.yml.
|
|
135
|
+
post "/set_version" do
|
|
136
|
+
ext_id = require_ext_id!
|
|
137
|
+
version = presence(json_body["version"])
|
|
138
|
+
error!("version required", status: 422) unless version
|
|
139
|
+
|
|
140
|
+
result = Clacky::ExtensionLoader.load_all(force: false)
|
|
141
|
+
container = Array(result.containers).find { |id, _| id == ext_id }&.last
|
|
142
|
+
error!("extension not found: #{ext_id}", status: 404) unless container
|
|
143
|
+
|
|
144
|
+
yml_path = File.join(container[:dir], "ext.yml")
|
|
145
|
+
error!("ext.yml not found", status: 404) unless File.exist?(yml_path)
|
|
146
|
+
|
|
147
|
+
content = File.read(yml_path)
|
|
148
|
+
if content =~ /^version:/
|
|
149
|
+
content = content.sub(/^version:.*$/, "version: #{version}")
|
|
150
|
+
else
|
|
151
|
+
content = content.rstrip + "\nversion: #{version}\n"
|
|
152
|
+
end
|
|
153
|
+
File.write(yml_path, content)
|
|
154
|
+
|
|
155
|
+
json(ok: true, ext_id: ext_id, version: version)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
|
|
132
159
|
# body: { idea? }
|
|
133
160
|
# Spawns a session bound to the ext-developer agent, optionally seeded with
|
|
134
161
|
# the user's idea as the first task — the "let AI build it for me" entry.
|
|
@@ -5,7 +5,6 @@ version: "0.1.0"
|
|
|
5
5
|
author: OpenClacky
|
|
6
6
|
homepage: https://www.openclacky.com
|
|
7
7
|
license: MIT
|
|
8
|
-
origin: self
|
|
9
8
|
contributes:
|
|
10
9
|
api: api/handler.rb
|
|
11
10
|
panels:
|
|
@@ -20,8 +19,8 @@ contributes:
|
|
|
20
19
|
- id: ext-developer
|
|
21
20
|
title: Extension Developer
|
|
22
21
|
title_zh: 扩展开发
|
|
23
|
-
description: AI expert that helps you build, debug, and publish
|
|
24
|
-
description_zh:
|
|
22
|
+
description: AI expert that helps you build, debug, and publish extensions
|
|
23
|
+
description_zh: 帮你开发、调试、发布扩展的 AI 专家
|
|
25
24
|
order: 5
|
|
26
25
|
prompt: agents/ext-developer/system_prompt.md
|
|
27
26
|
avatar: agents/ext-developer/avatar.png
|