mirivlad
963049add3
fix: localize shell operation errors
2026-07-14 22:00:24 +08:00
mirivlad
96dd499e0b
feat: expose scheduled notifications to plugins
2026-07-14 02:37:28 +08:00
mirivlad
6b556c59d9
feat: scope activity and browser links by durable workspace
2026-07-12 20:39:03 +08:00
mirivlad
bcf49ed32c
feat: persist passive browser activity batches
2026-07-12 17:29:07 +08:00
mirivlad
477b372110
fix: persist browser captures atomically
2026-07-11 23:30:38 +08:00
mirivlad
7f0cc308c2
feat: add Russian desktop localization
2026-07-11 12:50:00 +08:00
mirivlad
3f27ba79a4
feat: bridge permanent trash deletion to plugins
2026-07-10 08:35:46 +08:00
mirivlad
0f293640f9
feat: require paired browser receiver
2026-07-10 03:37:12 +08:00
mirivlad
167d593245
Revert "fix: P1 shell tooltip fixes + Today routing + workspaces API"
...
This reverts commit 9d06b164d3 .
2026-07-01 07:44:28 +08:00
mirivlad
9d06b164d3
fix: P1 shell tooltip fixes + Today routing + workspaces API
...
Shell:
- WorkspaceHost: change tooltip from pluginId to human-readable title
- StatusBar: replace pluginId tooltips with label or id (3 occurrences)
- App: startup routing to Today view, sidebar Today nav item
- Sidebar: add Today button in Overview section
- TodaySurface: separate global vs workspace data (no fallthrough)
Plugin API:
- Add workspaces.list() method wrapping App.ListWorkspaces()
(needed by browser-inbox workspace picker)
2026-07-01 04:15:35 +08:00
mirivlad
4bb9e84c35
feat: harden secret unlock and deletion
2026-06-29 21:42:10 +08:00
mirivlad
56c685212b
feat: expose scoped secret store API
2026-06-29 20:36:45 +08:00
mirivlad
fe91784a8e
feat: add bounded binary file writes
2026-06-29 10:12:26 +08:00
mirivlad
7363313f1e
feat: expose plugin data storage bridge
2026-06-29 04:27:22 +08:00
mirivlad
874b7c7ffb
feat: add workspace header search slot
2026-06-29 04:24:15 +08:00
mirivlad
57677d1b1b
feat: add bounded file byte reads
2026-06-29 03:16:16 +08:00
mirivlad
cc0c050985
feat: restore files from trash
2026-06-28 22:18:44 +08:00
mirivlad
e5bdaec0aa
feat: expose file trash metadata
2026-06-28 17:03:12 +08:00
mirivlad
1f1001108b
feat: expose action contributions to plugins
2026-06-28 16:28:33 +08:00
mirivlad
35012025b6
Add sync reset key bridge
2026-06-27 18:46:05 +08:00
mirivlad
a2791c494f
Add browser inbox receiver
2026-06-27 18:39:01 +08:00
mirivlad
173cc93258
Add public external file open API
2026-06-27 13:30:31 +08:00
mirivlad
7630a31286
Add command palette host
2026-06-27 13:13:15 +08:00
mirivlad
24444a8588
Refine v2 plugin API and sync flow
2026-06-27 12:36:31 +08:00
mirivlad
db67c370ab
fix: add backend.call() API and fix [object Object] in workspace sidebar
...
- Add api.backend.call(method, ...args) to VerstakPluginAPI for direct Wails method invocation
- Add wsName() helper in WorkspaceTree.svelte with String() coercion to prevent [object Object] display
- Use correct Wails path window['go']['api']['App'] in backend.call()
2026-06-20 03:02:33 +08:00
mirivlad
5c979174f1
fix: polish workspace files and editor shell
2026-06-19 23:37:10 +08:00
mirivlad
6ed6df311a
Implement milestone 6b workbench routing skeleton
2026-06-19 07:51:57 +08:00
mirivlad
6d2f7858eb
fix: replace emoji icons with inline SVG (Icon.svelte + icons.js)
...
All emoji characters replaced with inline SVG icons:
- Plugin Manager sidebar: puzzle SVG icon
- Verstak logo: stack/tray SVG icon
- Plugin icons: flask SVG (from plugin manifest)
- Warning/error indicators: warning triangle SVG
- Settings button: gear SVG
- Vault recent: vault/shield SVG
- Fallback: dot SVG
New components:
- frontend/src/lib/ui/icons.js — SVG path map
- frontend/src/lib/ui/Icon.svelte — reusable SVG icon component
Icon policy: NO emoji or unicode pictographic symbols in the app.
Only SVG icons registered in icons.js are allowed.
Wails WebKitGTK does not render colour emoji.
2026-06-17 19:02:51 +08:00
mirivlad
05ef1449bc
feat: milestone 5b — frontend bundle host + VerstakPluginAPI stub
...
- Bundle contract: window.VerstakPluginRegister(id, {components: {...}})
- PluginBundleHost.svelte: loads bundle via GetPluginAssetContent, mounts components
- VerstakPluginAPI.js: restricted API (capabilities, events, settings, commands — all stub)
- ViewContainer: PluginBundleHost replaces placeholder when frontend bundle exists
- PluginManager: settings panel via PluginBundleHost (removed hardcoded form)
- Backend: GetPluginFrontendInfo, GetPluginAssetContent with path security
- Security: reject absolute paths, path traversal, escape from plugin root
- Error boundary: bundle load/execute/mount errors show fallback, not crash
- Tests: 11 backend tests (asset API), frontend bundle checks in smoke
- Docs: bundle contract, VerstakPluginAPI, security constraints
2026-06-17 17:39:50 +08:00