cowork-dash 0.2.1__tar.gz → 0.2.2__tar.gz
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.
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/CHANGELOG.md +10 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/PKG-INFO +1 -1
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/agent.py +1 -1
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/app.py +22 -5
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/components.py +14 -1
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/layout.py +3 -1
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/pyproject.toml +1 -1
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/.claude/settings.local.json +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/.gitignore +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/Dockerfile.test +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/LICENSE +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/MANIFEST.in +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/README.md +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/__init__.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/__main__.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/assets/app.js +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/assets/favicon.ico +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/assets/favicon.svg +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/assets/styles.css +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/backends.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/canvas.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/cli.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/config.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/file_utils.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/sandbox.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/tools.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/cowork_dash/virtual_fs.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/docs/dark.png +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/docs/light.png +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/examples/example_agent.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/examples/python_api_example.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/templates/index.html +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/tests/__init__.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/tests/conftest.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/tests/test_backends.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/tests/test_canvas.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/tests/test_core.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/tests/test_file_utils.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/tests/test_sandbox.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/tests/test_virtual_fs.py +0 -0
- {cowork_dash-0.2.1 → cowork_dash-0.2.2}/uv.lock +0 -0
|
@@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.2.2] - 2026-02-03
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **Sidebar collapse**: Sidebar now fully collapses with minimal expand button width
|
|
12
|
+
- **Chat panel expansion**: Chat panel expands to fill space when sidebar is hidden
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- **Tool call display**: Tool calls now show first 100 characters of arguments in header
|
|
16
|
+
|
|
8
17
|
## [0.2.1] - 2026-02-03
|
|
9
18
|
|
|
10
19
|
### Added
|
|
@@ -188,6 +197,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
188
197
|
- Resizable split-pane interface
|
|
189
198
|
- Upload/download functionality for files
|
|
190
199
|
|
|
200
|
+
[0.2.2]: https://github.com/dkedar7/cowork-dash/compare/v0.2.1...v0.2.2
|
|
191
201
|
[0.2.1]: https://github.com/dkedar7/cowork-dash/compare/v0.2.0...v0.2.1
|
|
192
202
|
[0.2.0]: https://github.com/dkedar7/cowork-dash/compare/v0.1.9...v0.2.0
|
|
193
203
|
[0.1.9]: https://github.com/dkedar7/cowork-dash/compare/v0.1.8...v0.1.9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cowork-dash
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: AI Agent Web Interface with Filesystem and Canvas Visualization
|
|
5
5
|
Project-URL: Homepage, https://github.com/dkedar7/cowork-dash
|
|
6
6
|
Project-URL: Documentation, https://github.com/dkedar7/cowork-dash/blob/main/README.md
|
|
@@ -2918,7 +2918,8 @@ def toggle_view(view_value):
|
|
|
2918
2918
|
[Output("sidebar-panel", "style"),
|
|
2919
2919
|
Output("sidebar-expand-btn", "style"),
|
|
2920
2920
|
Output("resize-handle", "style"),
|
|
2921
|
-
Output("sidebar-collapsed", "data")
|
|
2921
|
+
Output("sidebar-collapsed", "data"),
|
|
2922
|
+
Output("chat-panel", "style")],
|
|
2922
2923
|
[Input("collapse-sidebar-btn", "n_clicks"),
|
|
2923
2924
|
Input("expand-sidebar-btn", "n_clicks")],
|
|
2924
2925
|
[State("sidebar-collapsed", "data")],
|
|
@@ -2941,21 +2942,30 @@ def toggle_sidebar_collapse(collapse_clicks, expand_clicks, is_collapsed):
|
|
|
2941
2942
|
raise PreventUpdate
|
|
2942
2943
|
|
|
2943
2944
|
if new_collapsed:
|
|
2944
|
-
# Collapsed state - hide sidebar, show expand button
|
|
2945
|
+
# Collapsed state - hide sidebar, show expand button, expand chat panel
|
|
2945
2946
|
return (
|
|
2946
2947
|
{"display": "none"}, # Hide sidebar panel
|
|
2947
|
-
{ # Show expand button
|
|
2948
|
+
{ # Show expand button - minimal width
|
|
2948
2949
|
"display": "flex",
|
|
2949
2950
|
"alignItems": "flex-start",
|
|
2950
|
-
"paddingTop": "
|
|
2951
|
+
"paddingTop": "8px",
|
|
2952
|
+
"paddingLeft": "2px",
|
|
2953
|
+
"paddingRight": "2px",
|
|
2951
2954
|
"borderLeft": "1px solid var(--mantine-color-default-border)",
|
|
2952
2955
|
"background": "var(--mantine-color-body)",
|
|
2953
2956
|
},
|
|
2954
2957
|
{"display": "none"}, # Hide resize handle
|
|
2955
2958
|
True, # Store collapsed state
|
|
2959
|
+
{ # Expand chat panel to fill space
|
|
2960
|
+
"flex": "1",
|
|
2961
|
+
"display": "flex",
|
|
2962
|
+
"flexDirection": "column",
|
|
2963
|
+
"background": "var(--mantine-color-body)",
|
|
2964
|
+
"minWidth": "0",
|
|
2965
|
+
},
|
|
2956
2966
|
)
|
|
2957
2967
|
else:
|
|
2958
|
-
# Expanded state - show sidebar, hide expand button
|
|
2968
|
+
# Expanded state - show sidebar, hide expand button, restore chat panel
|
|
2959
2969
|
return (
|
|
2960
2970
|
{ # Show sidebar panel
|
|
2961
2971
|
"flex": "1",
|
|
@@ -2974,6 +2984,13 @@ def toggle_sidebar_collapse(collapse_clicks, expand_clicks, is_collapsed):
|
|
|
2974
2984
|
"flexShrink": "0",
|
|
2975
2985
|
},
|
|
2976
2986
|
False, # Store expanded state
|
|
2987
|
+
{ # Restore chat panel to original flex
|
|
2988
|
+
"flex": "3",
|
|
2989
|
+
"display": "flex",
|
|
2990
|
+
"flexDirection": "column",
|
|
2991
|
+
"background": "var(--mantine-color-body)",
|
|
2992
|
+
"minWidth": "0",
|
|
2993
|
+
},
|
|
2977
2994
|
)
|
|
2978
2995
|
|
|
2979
2996
|
|
|
@@ -291,13 +291,23 @@ def format_tool_call(tool_call: Dict, colors: Dict, is_completed: bool = False):
|
|
|
291
291
|
|
|
292
292
|
# Format args for display (truncate if too long)
|
|
293
293
|
args_display = ""
|
|
294
|
+
args_preview = "" # Short preview for header
|
|
294
295
|
if tool_args:
|
|
295
296
|
try:
|
|
297
|
+
# Compact JSON for preview (no indentation)
|
|
298
|
+
args_compact = json.dumps(tool_args, separators=(',', ':'))
|
|
299
|
+
if len(args_compact) > 100:
|
|
300
|
+
args_preview = args_compact[:100] + "..."
|
|
301
|
+
else:
|
|
302
|
+
args_preview = args_compact
|
|
303
|
+
|
|
304
|
+
# Full JSON for expanded view
|
|
296
305
|
args_str = json.dumps(tool_args, indent=2)
|
|
297
306
|
if len(args_str) > 500:
|
|
298
307
|
args_str = args_str[:500] + "..."
|
|
299
308
|
args_display = args_str
|
|
300
309
|
except:
|
|
310
|
+
args_preview = str(tool_args)[:100]
|
|
301
311
|
args_display = str(tool_args)[:500]
|
|
302
312
|
|
|
303
313
|
# Build inner content (shown when expanded)
|
|
@@ -325,11 +335,14 @@ def format_tool_call(tool_call: Dict, colors: Dict, is_completed: bool = False):
|
|
|
325
335
|
html.Pre(result_display, className="tool-call-result")
|
|
326
336
|
]))
|
|
327
337
|
|
|
338
|
+
# Build header text: tool_name(args_preview)
|
|
339
|
+
header_text = f"{tool_name}({args_preview})" if args_preview else tool_name
|
|
340
|
+
|
|
328
341
|
# Wrap entire tool call in a details element
|
|
329
342
|
return html.Details([
|
|
330
343
|
html.Summary([
|
|
331
344
|
html.Span(className="tool-call-status-dot"),
|
|
332
|
-
html.Span(
|
|
345
|
+
html.Span(header_text, className="tool-call-name"),
|
|
333
346
|
], className="tool-call-header"),
|
|
334
347
|
html.Div(inner_children, className="tool-call-body") if inner_children else None
|
|
335
348
|
], className=f"tool-call {status_class}")
|
|
@@ -383,7 +383,9 @@ def create_layout(workspace_root, app_title, app_subtitle, colors, styles, agent
|
|
|
383
383
|
], id="sidebar-expand-btn", style={
|
|
384
384
|
"display": "none",
|
|
385
385
|
"alignItems": "flex-start",
|
|
386
|
-
"paddingTop": "
|
|
386
|
+
"paddingTop": "8px",
|
|
387
|
+
"paddingLeft": "2px",
|
|
388
|
+
"paddingRight": "2px",
|
|
387
389
|
"borderLeft": "1px solid var(--mantine-color-default-border)",
|
|
388
390
|
"background": "var(--mantine-color-body)",
|
|
389
391
|
}),
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|