From 46329700d5c7925b57615974123e05cabea7f5bc Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Thu, 23 Apr 2026 00:37:20 +0200 Subject: [PATCH] dissolve app/ into repo root (D-056) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Single Flutter package at the repo root. All code, tests, assets, and platform directories moved from app/ to root. Package renamed from clide_app to clide — all imports rewritten. Merged pubspec combines core (ffi) and app (flutter, yaml, xterm) dependencies. Makefile simplified: no APP_PRESENT conditionals, no cd, no daemon lifecycle. 317 tests pass. Co-Authored-By: Claude Opus 4.6 (1M context) --- .claude/skills/pql/.pql-install.json | 6 +- .claude/skills/pql/SKILL.md | 17 +- .clide/settings.yaml | 6 + .gitignore | 16 +- app/.metadata => .metadata | 0 Makefile | 106 +----- ...ysis_options.yaml => analysis_options.yaml | 0 app/.gitignore | 45 --- app/README.md | 3 - app/lib/builtin/claude/src/extension.dart | 52 --- app/pubspec.lock | 347 ------------------ app/pubspec.yaml | 117 ------ {app/assets => assets}/LICENSE | 0 .../jetbrains_mono/JetBrainsMono-Bold.ttf | Bin .../JetBrainsMono-BoldItalic.ttf | Bin .../jetbrains_mono/JetBrainsMono-Italic.ttf | Bin .../jetbrains_mono/JetBrainsMono-Regular.ttf | Bin .../fonts/jetbrains_mono/OFL.txt | 0 .../JosefinSans-Italic-VariableFont.ttf | Bin .../josefin_sans/JosefinSans-VariableFont.ttf | Bin .../fonts/josefin_sans/OFL.txt | 0 {app/assets => assets}/fonts/phosphor/LICENSE | 0 .../fonts/phosphor/Phosphor-Bold.ttf | Bin .../fonts/phosphor/Phosphor-Fill.ttf | Bin .../fonts/phosphor/Phosphor.ttf | Bin {app/assets => assets}/grammars/bash.wasm | Bin {app/assets => assets}/grammars/c-sharp.wasm | Bin {app/assets => assets}/grammars/c.wasm | Bin {app/assets => assets}/grammars/comment.wasm | Bin {app/assets => assets}/grammars/cpp.wasm | Bin {app/assets => assets}/grammars/css.wasm | Bin {app/assets => assets}/grammars/dart.wasm | Bin {app/assets => assets}/grammars/diff.wasm | Bin .../grammars/dockerfile.wasm | Bin {app/assets => assets}/grammars/elixir.wasm | Bin {app/assets => assets}/grammars/erlang.wasm | Bin {app/assets => assets}/grammars/gdscript.wasm | Bin .../grammars/git-config.wasm | Bin .../assets => assets}/grammars/gitignore.wasm | Bin {app/assets => assets}/grammars/glsl.wasm | Bin {app/assets => assets}/grammars/go.wasm | Bin {app/assets => assets}/grammars/haskell.wasm | Bin {app/assets => assets}/grammars/hcl.wasm | Bin {app/assets => assets}/grammars/hlsl.wasm | Bin {app/assets => assets}/grammars/html.wasm | Bin {app/assets => assets}/grammars/java.wasm | Bin .../grammars/javascript.wasm | Bin {app/assets => assets}/grammars/json.wasm | Bin {app/assets => assets}/grammars/julia.wasm | Bin {app/assets => assets}/grammars/just.wasm | Bin {app/assets => assets}/grammars/kotlin.wasm | Bin {app/assets => assets}/grammars/lua.wasm | Bin {app/assets => assets}/grammars/make.wasm | Bin {app/assets => assets}/grammars/markdown.wasm | Bin {app/assets => assets}/grammars/nickel.wasm | Bin {app/assets => assets}/grammars/nix.wasm | Bin {app/assets => assets}/grammars/php.wasm | Bin {app/assets => assets}/grammars/proto.wasm | Bin {app/assets => assets}/grammars/python.wasm | Bin {app/assets => assets}/grammars/r.wasm | Bin {app/assets => assets}/grammars/regex.wasm | Bin {app/assets => assets}/grammars/ruby.wasm | Bin {app/assets => assets}/grammars/rust.wasm | Bin {app/assets => assets}/grammars/sqlite.wasm | Bin {app/assets => assets}/grammars/svelte.wasm | Bin {app/assets => assets}/grammars/swift.wasm | Bin {app/assets => assets}/grammars/toml.wasm | Bin .../grammars/typescript.wasm | Bin {app/assets => assets}/grammars/vue.wasm | Bin {app/assets => assets}/grammars/wgsl.wasm | Bin {app/assets => assets}/grammars/xml.wasm | Bin {app/assets => assets}/grammars/yaml.wasm | Bin {app/assets => assets}/grammars/zig.wasm | Bin {app/assets => assets}/licenses.yaml | 0 .../logo/clide-logo-1024.png | Bin {app/assets => assets}/logo/clide-logo-16.png | Bin .../assets => assets}/logo/clide-logo-192.png | Bin .../assets => assets}/logo/clide-logo-256.png | Bin {app/assets => assets}/logo/clide-logo-32.png | Bin {app/assets => assets}/logo/clide-logo-48.png | Bin .../assets => assets}/logo/clide-logo-512.png | Bin {app/assets => assets}/logo/clide-logo.svg | 0 {app/assets => assets}/queries/bash.scm | 0 {app/assets => assets}/queries/c-sharp.scm | 0 {app/assets => assets}/queries/c.scm | 0 {app/assets => assets}/queries/comment.scm | 0 {app/assets => assets}/queries/cpp.scm | 0 {app/assets => assets}/queries/css.scm | 0 {app/assets => assets}/queries/dart.scm | 0 {app/assets => assets}/queries/diff.scm | 0 {app/assets => assets}/queries/dockerfile.scm | 0 {app/assets => assets}/queries/elixir.scm | 0 {app/assets => assets}/queries/erlang.scm | 0 {app/assets => assets}/queries/gdscript.scm | 0 {app/assets => assets}/queries/git-config.scm | 0 {app/assets => assets}/queries/gitignore.scm | 0 {app/assets => assets}/queries/glsl.scm | 0 {app/assets => assets}/queries/go.scm | 0 {app/assets => assets}/queries/haskell.scm | 0 {app/assets => assets}/queries/hcl.scm | 0 {app/assets => assets}/queries/hlsl.scm | 0 {app/assets => assets}/queries/html.scm | 0 {app/assets => assets}/queries/java.scm | 0 {app/assets => assets}/queries/javascript.scm | 0 {app/assets => assets}/queries/json.scm | 0 {app/assets => assets}/queries/julia.scm | 0 {app/assets => assets}/queries/just.scm | 0 {app/assets => assets}/queries/kotlin.scm | 0 {app/assets => assets}/queries/lua.scm | 0 {app/assets => assets}/queries/make.scm | 0 {app/assets => assets}/queries/markdown.scm | 0 {app/assets => assets}/queries/nickel.scm | 0 {app/assets => assets}/queries/nix.scm | 0 {app/assets => assets}/queries/php.scm | 0 {app/assets => assets}/queries/proto.scm | 0 {app/assets => assets}/queries/python.scm | 0 {app/assets => assets}/queries/r.scm | 0 {app/assets => assets}/queries/regex.scm | 0 {app/assets => assets}/queries/ruby.scm | 0 {app/assets => assets}/queries/rust.scm | 0 {app/assets => assets}/queries/sqlite.scm | 0 {app/assets => assets}/queries/svelte.scm | 0 {app/assets => assets}/queries/swift.scm | 0 {app/assets => assets}/queries/toml.scm | 0 {app/assets => assets}/queries/typescript.scm | 0 {app/assets => assets}/queries/vue.scm | 0 {app/assets => assets}/queries/wgsl.scm | 0 {app/assets => assets}/queries/xml.scm | 0 {app/assets => assets}/queries/yaml.scm | 0 {app/assets => assets}/queries/zig.scm | 0 decisions/architecture.md | 19 + .../app_starts_test.dart | 12 +- .../extension_lifecycle_test.dart | 10 +- .../theme_picker_test.dart | 10 +- {app/lib => lib}/app.dart | 8 +- {app/lib => lib}/builtin/canvas/canvas.dart | 0 .../builtin/canvas/src/extension.dart | 2 +- {app/lib => lib}/builtin/claude/claude.dart | 0 .../builtin/claude/src/claude_pane.dart | 32 +- .../claude/src/claude_session_host.dart | 203 ++++++++++ lib/builtin/claude/src/extension.dart | 76 ++++ .../builtin/claude/src/session_naming.dart | 0 .../claude_control/claude_control.dart | 0 .../builtin/claude_control/src/extension.dart | 2 +- .../builtin/decisions/decisions.dart | 0 .../builtin/decisions/src/decisions_view.dart | 4 +- .../builtin/decisions/src/extension.dart | 6 +- .../default_layout/default_layout.dart | 0 .../builtin/default_layout/src/extension.dart | 4 +- {app/lib => lib}/builtin/diff/diff.dart | 0 .../builtin/diff/src/diff_controller.dart | 2 +- .../builtin/diff/src/diff_view.dart | 4 +- .../builtin/diff/src/extension.dart | 6 +- {app/lib => lib}/builtin/editor/editor.dart | 0 .../builtin/editor/src/editor_controller.dart | 2 +- .../builtin/editor/src/editor_view.dart | 6 +- .../builtin/editor/src/extension.dart | 6 +- .../editor/src/syntax_text_controller.dart | 6 +- .../builtin/extensions_ui/extensions_ui.dart | 0 .../builtin/extensions_ui/src/extension.dart | 2 +- {app/lib => lib}/builtin/files/files.dart | 0 .../builtin/files/src/extension.dart | 6 +- .../files/src/file_tree_controller.dart | 2 +- .../builtin/files/src/file_tree_view.dart | 4 +- {app/lib => lib}/builtin/git/git.dart | 0 .../builtin/git/src/extension.dart | 8 +- .../builtin/git/src/git_controller.dart | 2 +- .../builtin/git/src/git_panel_view.dart | 4 +- .../builtin/git/src/git_status_item.dart | 4 +- .../builtin/grammars_core/grammars_core.dart | 0 .../builtin/grammars_core/src/extension.dart | 2 +- {app/lib => lib}/builtin/graph/graph.dart | 0 .../builtin/graph/src/extension.dart | 6 +- .../builtin/graph/src/graph_view.dart | 4 +- .../builtin/ipc_status/ipc_status.dart | 0 .../builtin/ipc_status/src/extension.dart | 6 +- .../builtin/ipc_status/src/status_item.dart | 4 +- .../keybindings_ui/keybindings_ui.dart | 0 .../builtin/keybindings_ui/src/extension.dart | 2 +- .../builtin/markdown/markdown.dart | 0 .../builtin/markdown/src/extension.dart | 6 +- .../builtin/markdown/src/markdown_viewer.dart | 4 +- {app/lib => lib}/builtin/pql/pql.dart | 0 .../builtin/pql/src/backlinks_controller.dart | 2 +- .../builtin/pql/src/backlinks_view.dart | 4 +- .../builtin/pql/src/extension.dart | 8 +- .../builtin/pql/src/pql_controller.dart | 2 +- .../builtin/pql/src/pql_panel_view.dart | 4 +- .../builtin/problems/problems.dart | 0 .../builtin/problems/src/extension.dart | 6 +- .../problems/src/problems_controller.dart | 2 +- .../builtin/problems/src/problems_view.dart | 4 +- .../builtin/settings_ui/settings_ui.dart | 0 .../builtin/settings_ui/src/extension.dart | 2 +- .../builtin/terminal/src/extension.dart | 6 +- .../builtin/terminal/src/terminal_pane.dart | 4 +- .../builtin/terminal/terminal.dart | 0 .../builtin/theme_picker/src/extension.dart | 4 +- .../builtin/theme_picker/src/picker_view.dart | 4 +- .../builtin/theme_picker/theme_picker.dart | 0 .../builtin/tickets/src/extension.dart | 6 +- .../builtin/tickets/src/tickets_view.dart | 4 +- {app/lib => lib}/builtin/tickets/tickets.dart | 0 .../builtin/todos/src/extension.dart | 2 +- {app/lib => lib}/builtin/todos/todos.dart | 0 .../builtin/welcome/src/extension.dart | 6 +- .../builtin/welcome/src/welcome_view.dart | 4 +- {app/lib => lib}/builtin/welcome/welcome.dart | 0 {app/lib => lib}/extension/extension.dart | 0 .../extension/src/contribution.dart | 2 +- {app/lib => lib}/extension/src/extension.dart | 42 +-- {app/lib => lib}/extension/src/host.dart | 2 +- {app/lib => lib}/extension/src/manifest.dart | 0 {app/lib => lib}/kernel/kernel.dart | 0 {app/lib => lib}/kernel/src/clipboard.dart | 0 .../kernel/src/commands/keybindings.dart | 0 .../kernel/src/commands/palette.dart | 4 +- .../kernel/src/commands/registry.dart | 2 +- {app/lib => lib}/kernel/src/dialog.dart | 0 {app/lib => lib}/kernel/src/events/bus.dart | 2 +- {app/lib => lib}/kernel/src/events/types.dart | 0 .../kernel/src/extensions_manager.dart | 48 +-- {app/lib => lib}/kernel/src/facade.dart | 48 +-- {app/lib => lib}/kernel/src/files.dart | 6 +- {app/lib => lib}/kernel/src/focus.dart | 2 +- .../i18n/catalog/builtin.claude_en_us.json | 0 .../catalog/builtin.default-layout_en_us.json | 0 .../i18n/catalog/builtin.editor_en_us.json | 0 .../src/i18n/catalog/builtin.files_en_us.json | 0 .../catalog/builtin.ipc-status_en_us.json | 0 .../i18n/catalog/builtin.terminal_en_us.json | 0 .../catalog/builtin.theme-picker_en_us.json | 0 .../i18n/catalog/builtin.welcome_en_us.json | 0 .../kernel/src/i18n/catalog_loader.dart | 2 +- .../kernel/src/i18n/fallback_chain.dart | 0 {app/lib => lib}/kernel/src/i18n/i18n.dart | 6 +- {app/lib => lib}/kernel/src/ipc/client.dart | 6 +- {app/lib => lib}/kernel/src/log.dart | 0 {app/lib => lib}/kernel/src/net.dart | 0 {app/lib => lib}/kernel/src/notify.dart | 0 {app/lib => lib}/kernel/src/os.dart | 6 +- .../kernel/src/panels/arrangement.dart | 6 +- .../kernel/src/panels/drag_resize.dart | 6 +- .../kernel/src/panels/layout_preset.dart | 4 +- .../kernel/src/panels/registry.dart | 4 +- .../kernel/src/panels/slot_id.dart | 0 {app/lib => lib}/kernel/src/project.dart | 8 +- {app/lib => lib}/kernel/src/secrets.dart | 0 {app/lib => lib}/kernel/src/settings.dart | 0 .../kernel/src/syntax/language_map.dart | 0 .../kernel/src/syntax/tree_sitter_ffi.dart | 0 .../src/syntax/tree_sitter_service.dart | 6 +- .../kernel/src/theme/contrast.dart | 2 +- .../kernel/src/theme/controller.dart | 6 +- {app/lib => lib}/kernel/src/theme/loader.dart | 4 +- .../lib => lib}/kernel/src/theme/palette.dart | 0 .../kernel/src/theme/resolver.dart | 6 +- .../kernel/src/theme/semantic.dart | 0 .../kernel/src/theme/themes/clide.yaml | 0 .../kernel/src/theme/themes/midnight.yaml | 0 .../kernel/src/theme/themes/paper.yaml | 0 .../kernel/src/theme/themes/summer-night.yaml | 0 .../kernel/src/theme/themes/terminal.yaml | 0 {app/lib => lib}/kernel/src/theme/tokens.dart | 0 {app/lib => lib}/kernel/src/tray.dart | 2 +- {app/lib => lib}/lua/lua.dart | 0 {app/lib => lib}/lua/src/adapter.dart | 2 +- {app/lib => lib}/lua/src/capability_api.dart | 0 {app/lib => lib}/lua/src/host.dart | 0 {app/lib => lib}/lua/src/render_intent.dart | 0 {app/lib => lib}/main.dart | 52 +-- .../lib => lib}/widgets/src/clide_button.dart | 4 +- .../widgets/src/clide_divider.dart | 2 +- {app/lib => lib}/widgets/src/clide_icon.dart | 2 +- .../widgets/src/clide_icon_rail.dart | 7 +- .../widgets/src/clide_palette.dart | 6 +- .../widgets/src/clide_pane_chrome.dart | 2 +- .../widgets/src/clide_pty_view.dart | 6 +- .../widgets/src/clide_scrollbar.dart | 2 +- {app/lib => lib}/widgets/src/clide_spine.dart | 2 +- .../widgets/src/clide_surface.dart | 2 +- .../widgets/src/clide_tab_bar.dart | 6 +- {app/lib => lib}/widgets/src/clide_text.dart | 4 +- .../widgets/src/clide_tooltip.dart | 4 +- {app/lib => lib}/widgets/src/icons/check.dart | 2 +- .../widgets/src/icons/chevron.dart | 2 +- {app/lib => lib}/widgets/src/icons/dot.dart | 2 +- .../lib => lib}/widgets/src/icons/folder.dart | 2 +- {app/lib => lib}/widgets/src/icons/gear.dart | 2 +- .../widgets/src/icons/git_branch.dart | 2 +- .../widgets/src/icons/phosphor.dart | 3 +- {app/lib => lib}/widgets/src/icons/plug.dart | 2 +- .../lib => lib}/widgets/src/icons/search.dart | 2 +- .../widgets/src/icons/terminal_icon.dart | 2 +- .../widgets/src/icons/warning.dart | 2 +- {app/lib => lib}/widgets/src/icons/x.dart | 2 +- {app/lib => lib}/widgets/src/typography.dart | 0 {app/lib => lib}/widgets/widgets.dart | 0 {app/linux => linux}/.gitignore | 0 {app/linux => linux}/CMakeLists.txt | 0 {app/linux => linux}/flutter/CMakeLists.txt | 0 .../flutter/generated_plugin_registrant.cc | 0 .../flutter/generated_plugin_registrant.h | 0 .../flutter/generated_plugins.cmake | 0 {app/linux => linux}/runner/CMakeLists.txt | 0 {app/linux => linux}/runner/main.cc | 0 {app/linux => linux}/runner/my_application.cc | 0 {app/linux => linux}/runner/my_application.h | 0 {app/macos => macos}/.gitignore | 0 .../Flutter/Flutter-Debug.xcconfig | 0 .../Flutter/Flutter-Release.xcconfig | 0 .../Flutter/GeneratedPluginRegistrant.swift | 0 .../Runner.xcodeproj/project.pbxproj | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/xcschemes/Runner.xcscheme | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 {app/macos => macos}/Runner/AppDelegate.swift | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/app_icon_1024.png | Bin .../AppIcon.appiconset/app_icon_128.png | Bin .../AppIcon.appiconset/app_icon_16.png | Bin .../AppIcon.appiconset/app_icon_256.png | Bin .../AppIcon.appiconset/app_icon_32.png | Bin .../AppIcon.appiconset/app_icon_512.png | Bin .../AppIcon.appiconset/app_icon_64.png | Bin .../Runner/Base.lproj/MainMenu.xib | 0 .../Runner/Configs/AppInfo.xcconfig | 0 .../Runner/Configs/Debug.xcconfig | 0 .../Runner/Configs/Release.xcconfig | 0 .../Runner/Configs/Warnings.xcconfig | 0 .../Runner/DebugProfile.entitlements | 0 {app/macos => macos}/Runner/Info.plist | 0 .../Runner/MainFlutterWindow.swift | 0 .../Runner/Release.entitlements | 0 .../RunnerTests/RunnerTests.swift | 0 {app/native => native}/linux-x64/BUILD.md | 0 .../linux-x64/WASMTIME-LICENSE | 0 .../linux-x64/libtree-sitter.so | Bin pubspec.lock | 221 +++++++++-- pubspec.yaml | 102 +++-- {app/test => test}/a11y/contrast_test.dart | 2 +- .../a11y/i18n_coverage_test.dart | 2 +- .../a11y/keyboard_traversal_test.dart | 2 +- .../a11y/semantic_coverage_test.dart | 10 +- .../builtin/claude/session_naming_test.dart | 2 +- .../builtin/default_layout/widget_test.dart | 6 +- .../builtin/ipc_status/widget_test.dart | 6 +- .../builtin/theme_picker/widget_test.dart | 4 +- .../builtin/welcome/widget_test.dart | 8 +- .../extension/src/contribution_test.dart | 4 +- .../extension/src/host_test.dart | 2 +- .../extension/src/manifest_test.dart | 2 +- .../goldens/clide_button_goldens_test.dart | 2 +- .../goldens/clide_icon_goldens_test.dart | 2 +- .../goldens/clide_tab_bar_goldens_test.dart | 2 +- .../goldens/goldens/ci/clide_button.png | Bin .../goldens/goldens/ci/clide_icon.png | Bin .../goldens/goldens/ci/clide_tab_bar.png | Bin .../goldens/goldens/linux/clide_button.png | Bin .../goldens/goldens/linux/clide_icon.png | Bin .../goldens/goldens/linux/clide_tab_bar.png | Bin {app/test => test}/helpers/fake_ipc.dart | 2 +- .../test => test}/helpers/golden_harness.dart | 0 .../test => test}/helpers/kernel_fixture.dart | 2 +- .../test => test}/helpers/widget_harness.dart | 2 +- .../kernel/src/commands/keybindings_test.dart | 2 +- .../kernel/src/commands/palette_test.dart | 4 +- .../kernel/src/commands/registry_test.dart | 4 +- .../kernel/src/events/bus_test.dart | 2 +- .../kernel/src/extensions_manager_test.dart | 4 +- .../test => test}/kernel/src/facade_test.dart | 0 .../kernel/src/i18n/i18n_test.dart | 2 +- {app/test => test}/kernel/src/log_test.dart | 2 +- .../kernel/src/panels/arrangement_test.dart | 2 +- .../kernel/src/panels/registry_test.dart | 4 +- .../kernel/src/settings_test.dart | 2 +- .../kernel/src/theme/controller_test.dart | 2 +- .../kernel/src/theme/loader_test.dart | 2 +- .../kernel/src/theme/resolver_test.dart | 2 +- .../widgets/clide_pane_chrome_test.dart | 2 +- .../widgets/src/clide_button_test.dart | 2 +- .../widgets/src/clide_divider_test.dart | 2 +- .../widgets/src/clide_icon_test.dart | 2 +- .../widgets/src/clide_surface_test.dart | 2 +- .../widgets/src/clide_tab_bar_test.dart | 2 +- .../widgets/src/clide_text_test.dart | 2 +- {app/web => web}/favicon.png | Bin {app/web => web}/icons/Icon-192.png | Bin {app/web => web}/icons/Icon-512.png | Bin {app/web => web}/icons/Icon-maskable-192.png | Bin {app/web => web}/icons/Icon-maskable-512.png | Bin {app/web => web}/index.html | 0 {app/web => web}/manifest.json | 0 394 files changed, 978 insertions(+), 1090 deletions(-) create mode 100644 .clide/settings.yaml rename app/.metadata => .metadata (100%) rename app/analysis_options.yaml => analysis_options.yaml (100%) delete mode 100644 app/.gitignore delete mode 100644 app/README.md delete mode 100644 app/lib/builtin/claude/src/extension.dart delete mode 100644 app/pubspec.lock delete mode 100644 app/pubspec.yaml rename {app/assets => assets}/LICENSE (100%) rename {app/assets => assets}/fonts/jetbrains_mono/JetBrainsMono-Bold.ttf (100%) rename {app/assets => assets}/fonts/jetbrains_mono/JetBrainsMono-BoldItalic.ttf (100%) rename {app/assets => assets}/fonts/jetbrains_mono/JetBrainsMono-Italic.ttf (100%) rename {app/assets => assets}/fonts/jetbrains_mono/JetBrainsMono-Regular.ttf (100%) rename {app/assets => assets}/fonts/jetbrains_mono/OFL.txt (100%) rename {app/assets => assets}/fonts/josefin_sans/JosefinSans-Italic-VariableFont.ttf (100%) rename {app/assets => assets}/fonts/josefin_sans/JosefinSans-VariableFont.ttf (100%) rename {app/assets => assets}/fonts/josefin_sans/OFL.txt (100%) rename {app/assets => assets}/fonts/phosphor/LICENSE (100%) rename {app/assets => assets}/fonts/phosphor/Phosphor-Bold.ttf (100%) rename {app/assets => assets}/fonts/phosphor/Phosphor-Fill.ttf (100%) rename {app/assets => assets}/fonts/phosphor/Phosphor.ttf (100%) rename {app/assets => assets}/grammars/bash.wasm (100%) rename {app/assets => assets}/grammars/c-sharp.wasm (100%) rename {app/assets => assets}/grammars/c.wasm (100%) rename {app/assets => assets}/grammars/comment.wasm (100%) rename {app/assets => assets}/grammars/cpp.wasm (100%) rename {app/assets => assets}/grammars/css.wasm (100%) rename {app/assets => assets}/grammars/dart.wasm (100%) rename {app/assets => assets}/grammars/diff.wasm (100%) rename {app/assets => assets}/grammars/dockerfile.wasm (100%) rename {app/assets => assets}/grammars/elixir.wasm (100%) rename {app/assets => assets}/grammars/erlang.wasm (100%) rename {app/assets => assets}/grammars/gdscript.wasm (100%) rename {app/assets => assets}/grammars/git-config.wasm (100%) rename {app/assets => assets}/grammars/gitignore.wasm (100%) rename {app/assets => assets}/grammars/glsl.wasm (100%) rename {app/assets => assets}/grammars/go.wasm (100%) rename {app/assets => assets}/grammars/haskell.wasm (100%) rename {app/assets => assets}/grammars/hcl.wasm (100%) rename {app/assets => assets}/grammars/hlsl.wasm (100%) rename {app/assets => assets}/grammars/html.wasm (100%) rename {app/assets => assets}/grammars/java.wasm (100%) rename {app/assets => assets}/grammars/javascript.wasm (100%) rename {app/assets => assets}/grammars/json.wasm (100%) rename {app/assets => assets}/grammars/julia.wasm (100%) rename {app/assets => assets}/grammars/just.wasm (100%) rename {app/assets => assets}/grammars/kotlin.wasm (100%) rename {app/assets => assets}/grammars/lua.wasm (100%) rename {app/assets => assets}/grammars/make.wasm (100%) rename {app/assets => assets}/grammars/markdown.wasm (100%) rename {app/assets => assets}/grammars/nickel.wasm (100%) rename {app/assets => assets}/grammars/nix.wasm (100%) rename {app/assets => assets}/grammars/php.wasm (100%) rename {app/assets => assets}/grammars/proto.wasm (100%) rename {app/assets => assets}/grammars/python.wasm (100%) rename {app/assets => assets}/grammars/r.wasm (100%) rename {app/assets => assets}/grammars/regex.wasm (100%) rename {app/assets => assets}/grammars/ruby.wasm (100%) rename {app/assets => assets}/grammars/rust.wasm (100%) rename {app/assets => assets}/grammars/sqlite.wasm (100%) rename {app/assets => assets}/grammars/svelte.wasm (100%) rename {app/assets => assets}/grammars/swift.wasm (100%) rename {app/assets => assets}/grammars/toml.wasm (100%) rename {app/assets => assets}/grammars/typescript.wasm (100%) rename {app/assets => assets}/grammars/vue.wasm (100%) rename {app/assets => assets}/grammars/wgsl.wasm (100%) rename {app/assets => assets}/grammars/xml.wasm (100%) rename {app/assets => assets}/grammars/yaml.wasm (100%) rename {app/assets => assets}/grammars/zig.wasm (100%) rename {app/assets => assets}/licenses.yaml (100%) rename {app/assets => assets}/logo/clide-logo-1024.png (100%) rename {app/assets => assets}/logo/clide-logo-16.png (100%) rename {app/assets => assets}/logo/clide-logo-192.png (100%) rename {app/assets => assets}/logo/clide-logo-256.png (100%) rename {app/assets => assets}/logo/clide-logo-32.png (100%) rename {app/assets => assets}/logo/clide-logo-48.png (100%) rename {app/assets => assets}/logo/clide-logo-512.png (100%) rename {app/assets => assets}/logo/clide-logo.svg (100%) rename {app/assets => assets}/queries/bash.scm (100%) rename {app/assets => assets}/queries/c-sharp.scm (100%) rename {app/assets => assets}/queries/c.scm (100%) rename {app/assets => assets}/queries/comment.scm (100%) rename {app/assets => assets}/queries/cpp.scm (100%) rename {app/assets => assets}/queries/css.scm (100%) rename {app/assets => assets}/queries/dart.scm (100%) rename {app/assets => assets}/queries/diff.scm (100%) rename {app/assets => assets}/queries/dockerfile.scm (100%) rename {app/assets => assets}/queries/elixir.scm (100%) rename {app/assets => assets}/queries/erlang.scm (100%) rename {app/assets => assets}/queries/gdscript.scm (100%) rename {app/assets => assets}/queries/git-config.scm (100%) rename {app/assets => assets}/queries/gitignore.scm (100%) rename {app/assets => assets}/queries/glsl.scm (100%) rename {app/assets => assets}/queries/go.scm (100%) rename {app/assets => assets}/queries/haskell.scm (100%) rename {app/assets => assets}/queries/hcl.scm (100%) rename {app/assets => assets}/queries/hlsl.scm (100%) rename {app/assets => assets}/queries/html.scm (100%) rename {app/assets => assets}/queries/java.scm (100%) rename {app/assets => assets}/queries/javascript.scm (100%) rename {app/assets => assets}/queries/json.scm (100%) rename {app/assets => assets}/queries/julia.scm (100%) rename {app/assets => assets}/queries/just.scm (100%) rename {app/assets => assets}/queries/kotlin.scm (100%) rename {app/assets => assets}/queries/lua.scm (100%) rename {app/assets => assets}/queries/make.scm (100%) rename {app/assets => assets}/queries/markdown.scm (100%) rename {app/assets => assets}/queries/nickel.scm (100%) rename {app/assets => assets}/queries/nix.scm (100%) rename {app/assets => assets}/queries/php.scm (100%) rename {app/assets => assets}/queries/proto.scm (100%) rename {app/assets => assets}/queries/python.scm (100%) rename {app/assets => assets}/queries/r.scm (100%) rename {app/assets => assets}/queries/regex.scm (100%) rename {app/assets => assets}/queries/ruby.scm (100%) rename {app/assets => assets}/queries/rust.scm (100%) rename {app/assets => assets}/queries/sqlite.scm (100%) rename {app/assets => assets}/queries/svelte.scm (100%) rename {app/assets => assets}/queries/swift.scm (100%) rename {app/assets => assets}/queries/toml.scm (100%) rename {app/assets => assets}/queries/typescript.scm (100%) rename {app/assets => assets}/queries/vue.scm (100%) rename {app/assets => assets}/queries/wgsl.scm (100%) rename {app/assets => assets}/queries/xml.scm (100%) rename {app/assets => assets}/queries/yaml.scm (100%) rename {app/assets => assets}/queries/zig.scm (100%) rename {app/integration_test => integration_test}/app_starts_test.dart (86%) rename {app/integration_test => integration_test}/extension_lifecycle_test.dart (86%) rename {app/integration_test => integration_test}/theme_picker_test.dart (86%) rename {app/lib => lib}/app.dart (98%) rename {app/lib => lib}/builtin/canvas/canvas.dart (100%) rename {app/lib => lib}/builtin/canvas/src/extension.dart (90%) rename {app/lib => lib}/builtin/claude/claude.dart (100%) rename {app/lib => lib}/builtin/claude/src/claude_pane.dart (91%) create mode 100644 lib/builtin/claude/src/claude_session_host.dart create mode 100644 lib/builtin/claude/src/extension.dart rename {app/lib => lib}/builtin/claude/src/session_naming.dart (100%) rename {app/lib => lib}/builtin/claude_control/claude_control.dart (100%) rename {app/lib => lib}/builtin/claude_control/src/extension.dart (93%) rename {app/lib => lib}/builtin/decisions/decisions.dart (100%) rename {app/lib => lib}/builtin/decisions/src/decisions_view.dart (97%) rename {app/lib => lib}/builtin/decisions/src/extension.dart (77%) rename {app/lib => lib}/builtin/default_layout/default_layout.dart (100%) rename {app/lib => lib}/builtin/default_layout/src/extension.dart (99%) rename {app/lib => lib}/builtin/diff/diff.dart (100%) rename {app/lib => lib}/builtin/diff/src/diff_controller.dart (97%) rename {app/lib => lib}/builtin/diff/src/diff_view.dart (99%) rename {app/lib => lib}/builtin/diff/src/extension.dart (77%) rename {app/lib => lib}/builtin/editor/editor.dart (100%) rename {app/lib => lib}/builtin/editor/src/editor_controller.dart (99%) rename {app/lib => lib}/builtin/editor/src/editor_view.dart (97%) rename {app/lib => lib}/builtin/editor/src/extension.dart (82%) rename {app/lib => lib}/builtin/editor/src/syntax_text_controller.dart (95%) rename {app/lib => lib}/builtin/extensions_ui/extensions_ui.dart (100%) rename {app/lib => lib}/builtin/extensions_ui/src/extension.dart (90%) rename {app/lib => lib}/builtin/files/files.dart (100%) rename {app/lib => lib}/builtin/files/src/extension.dart (82%) rename {app/lib => lib}/builtin/files/src/file_tree_controller.dart (98%) rename {app/lib => lib}/builtin/files/src/file_tree_view.dart (98%) rename {app/lib => lib}/builtin/git/git.dart (100%) rename {app/lib => lib}/builtin/git/src/extension.dart (75%) rename {app/lib => lib}/builtin/git/src/git_controller.dart (98%) rename {app/lib => lib}/builtin/git/src/git_panel_view.dart (99%) rename {app/lib => lib}/builtin/git/src/git_status_item.dart (98%) rename {app/lib => lib}/builtin/grammars_core/grammars_core.dart (100%) rename {app/lib => lib}/builtin/grammars_core/src/extension.dart (91%) rename {app/lib => lib}/builtin/graph/graph.dart (100%) rename {app/lib => lib}/builtin/graph/src/extension.dart (78%) rename {app/lib => lib}/builtin/graph/src/graph_view.dart (97%) rename {app/lib => lib}/builtin/ipc_status/ipc_status.dart (100%) rename {app/lib => lib}/builtin/ipc_status/src/extension.dart (79%) rename {app/lib => lib}/builtin/ipc_status/src/status_item.dart (94%) rename {app/lib => lib}/builtin/keybindings_ui/keybindings_ui.dart (100%) rename {app/lib => lib}/builtin/keybindings_ui/src/extension.dart (91%) rename {app/lib => lib}/builtin/markdown/markdown.dart (100%) rename {app/lib => lib}/builtin/markdown/src/extension.dart (78%) rename {app/lib => lib}/builtin/markdown/src/markdown_viewer.dart (96%) rename {app/lib => lib}/builtin/pql/pql.dart (100%) rename {app/lib => lib}/builtin/pql/src/backlinks_controller.dart (97%) rename {app/lib => lib}/builtin/pql/src/backlinks_view.dart (98%) rename {app/lib => lib}/builtin/pql/src/extension.dart (78%) rename {app/lib => lib}/builtin/pql/src/pql_controller.dart (98%) rename {app/lib => lib}/builtin/pql/src/pql_panel_view.dart (99%) rename {app/lib => lib}/builtin/problems/problems.dart (100%) rename {app/lib => lib}/builtin/problems/src/extension.dart (77%) rename {app/lib => lib}/builtin/problems/src/problems_controller.dart (98%) rename {app/lib => lib}/builtin/problems/src/problems_view.dart (98%) rename {app/lib => lib}/builtin/settings_ui/settings_ui.dart (100%) rename {app/lib => lib}/builtin/settings_ui/src/extension.dart (90%) rename {app/lib => lib}/builtin/terminal/src/extension.dart (82%) rename {app/lib => lib}/builtin/terminal/src/terminal_pane.dart (98%) rename {app/lib => lib}/builtin/terminal/terminal.dart (100%) rename {app/lib => lib}/builtin/theme_picker/src/extension.dart (90%) rename {app/lib => lib}/builtin/theme_picker/src/picker_view.dart (98%) rename {app/lib => lib}/builtin/theme_picker/theme_picker.dart (100%) rename {app/lib => lib}/builtin/tickets/src/extension.dart (77%) rename {app/lib => lib}/builtin/tickets/src/tickets_view.dart (97%) rename {app/lib => lib}/builtin/tickets/tickets.dart (100%) rename {app/lib => lib}/builtin/todos/src/extension.dart (90%) rename {app/lib => lib}/builtin/todos/todos.dart (100%) rename {app/lib => lib}/builtin/welcome/src/extension.dart (84%) rename {app/lib => lib}/builtin/welcome/src/welcome_view.dart (99%) rename {app/lib => lib}/builtin/welcome/welcome.dart (100%) rename {app/lib => lib}/extension/extension.dart (100%) rename {app/lib => lib}/extension/src/contribution.dart (98%) rename {app/lib => lib}/extension/src/extension.dart (67%) rename {app/lib => lib}/extension/src/host.dart (95%) rename {app/lib => lib}/extension/src/manifest.dart (100%) rename {app/lib => lib}/kernel/kernel.dart (100%) rename {app/lib => lib}/kernel/src/clipboard.dart (100%) rename {app/lib => lib}/kernel/src/commands/keybindings.dart (100%) rename {app/lib => lib}/kernel/src/commands/palette.dart (89%) rename {app/lib => lib}/kernel/src/commands/registry.dart (93%) rename {app/lib => lib}/kernel/src/dialog.dart (100%) rename {app/lib => lib}/kernel/src/events/bus.dart (90%) rename {app/lib => lib}/kernel/src/events/types.dart (100%) rename {app/lib => lib}/kernel/src/extensions_manager.dart (84%) rename {app/lib => lib}/kernel/src/facade.dart (80%) rename {app/lib => lib}/kernel/src/files.dart (90%) rename {app/lib => lib}/kernel/src/focus.dart (93%) rename {app/lib => lib}/kernel/src/i18n/catalog/builtin.claude_en_us.json (100%) rename {app/lib => lib}/kernel/src/i18n/catalog/builtin.default-layout_en_us.json (100%) rename {app/lib => lib}/kernel/src/i18n/catalog/builtin.editor_en_us.json (100%) rename {app/lib => lib}/kernel/src/i18n/catalog/builtin.files_en_us.json (100%) rename {app/lib => lib}/kernel/src/i18n/catalog/builtin.ipc-status_en_us.json (100%) rename {app/lib => lib}/kernel/src/i18n/catalog/builtin.terminal_en_us.json (100%) rename {app/lib => lib}/kernel/src/i18n/catalog/builtin.theme-picker_en_us.json (100%) rename {app/lib => lib}/kernel/src/i18n/catalog/builtin.welcome_en_us.json (100%) rename {app/lib => lib}/kernel/src/i18n/catalog_loader.dart (97%) rename {app/lib => lib}/kernel/src/i18n/fallback_chain.dart (100%) rename {app/lib => lib}/kernel/src/i18n/i18n.dart (96%) rename {app/lib => lib}/kernel/src/ipc/client.dart (96%) rename {app/lib => lib}/kernel/src/log.dart (100%) rename {app/lib => lib}/kernel/src/net.dart (100%) rename {app/lib => lib}/kernel/src/notify.dart (100%) rename {app/lib => lib}/kernel/src/os.dart (91%) rename {app/lib => lib}/kernel/src/panels/arrangement.dart (96%) rename {app/lib => lib}/kernel/src/panels/drag_resize.dart (92%) rename {app/lib => lib}/kernel/src/panels/layout_preset.dart (91%) rename {app/lib => lib}/kernel/src/panels/registry.dart (95%) rename {app/lib => lib}/kernel/src/panels/slot_id.dart (100%) rename {app/lib => lib}/kernel/src/project.dart (95%) rename {app/lib => lib}/kernel/src/secrets.dart (100%) rename {app/lib => lib}/kernel/src/settings.dart (100%) rename {app/lib => lib}/kernel/src/syntax/language_map.dart (100%) rename {app/lib => lib}/kernel/src/syntax/tree_sitter_ffi.dart (100%) rename {app/lib => lib}/kernel/src/syntax/tree_sitter_service.dart (97%) rename {app/lib => lib}/kernel/src/theme/contrast.dart (98%) rename {app/lib => lib}/kernel/src/theme/controller.dart (94%) rename {app/lib => lib}/kernel/src/theme/loader.dart (96%) rename {app/lib => lib}/kernel/src/theme/palette.dart (100%) rename {app/lib => lib}/kernel/src/theme/resolver.dart (98%) rename {app/lib => lib}/kernel/src/theme/semantic.dart (100%) rename {app/lib => lib}/kernel/src/theme/themes/clide.yaml (100%) rename {app/lib => lib}/kernel/src/theme/themes/midnight.yaml (100%) rename {app/lib => lib}/kernel/src/theme/themes/paper.yaml (100%) rename {app/lib => lib}/kernel/src/theme/themes/summer-night.yaml (100%) rename {app/lib => lib}/kernel/src/theme/themes/terminal.yaml (100%) rename {app/lib => lib}/kernel/src/theme/tokens.dart (100%) rename {app/lib => lib}/kernel/src/tray.dart (92%) rename {app/lib => lib}/lua/lua.dart (100%) rename {app/lib => lib}/lua/src/adapter.dart (93%) rename {app/lib => lib}/lua/src/capability_api.dart (100%) rename {app/lib => lib}/lua/src/host.dart (100%) rename {app/lib => lib}/lua/src/render_intent.dart (100%) rename {app/lib => lib}/main.dart (71%) rename {app/lib => lib}/widgets/src/clide_button.dart (96%) rename {app/lib => lib}/widgets/src/clide_divider.dart (89%) rename {app/lib => lib}/widgets/src/clide_icon.dart (95%) rename {app/lib => lib}/widgets/src/clide_icon_rail.dart (92%) rename {app/lib => lib}/widgets/src/clide_palette.dart (96%) rename {app/lib => lib}/widgets/src/clide_pane_chrome.dart (98%) rename {app/lib => lib}/widgets/src/clide_pty_view.dart (95%) rename {app/lib => lib}/widgets/src/clide_scrollbar.dart (95%) rename {app/lib => lib}/widgets/src/clide_spine.dart (97%) rename {app/lib => lib}/widgets/src/clide_surface.dart (94%) rename {app/lib => lib}/widgets/src/clide_tab_bar.dart (94%) rename {app/lib => lib}/widgets/src/clide_text.dart (92%) rename {app/lib => lib}/widgets/src/clide_tooltip.dart (94%) rename {app/lib => lib}/widgets/src/icons/check.dart (89%) rename {app/lib => lib}/widgets/src/icons/chevron.dart (94%) rename {app/lib => lib}/widgets/src/icons/dot.dart (81%) rename {app/lib => lib}/widgets/src/icons/folder.dart (90%) rename {app/lib => lib}/widgets/src/icons/gear.dart (95%) rename {app/lib => lib}/widgets/src/icons/git_branch.dart (93%) rename {app/lib => lib}/widgets/src/icons/phosphor.dart (96%) rename {app/lib => lib}/widgets/src/icons/plug.dart (94%) rename {app/lib => lib}/widgets/src/icons/search.dart (88%) rename {app/lib => lib}/widgets/src/icons/terminal_icon.dart (91%) rename {app/lib => lib}/widgets/src/icons/warning.dart (92%) rename {app/lib => lib}/widgets/src/icons/x.dart (88%) rename {app/lib => lib}/widgets/src/typography.dart (100%) rename {app/lib => lib}/widgets/widgets.dart (100%) rename {app/linux => linux}/.gitignore (100%) rename {app/linux => linux}/CMakeLists.txt (100%) rename {app/linux => linux}/flutter/CMakeLists.txt (100%) rename {app/linux => linux}/flutter/generated_plugin_registrant.cc (100%) rename {app/linux => linux}/flutter/generated_plugin_registrant.h (100%) rename {app/linux => linux}/flutter/generated_plugins.cmake (100%) rename {app/linux => linux}/runner/CMakeLists.txt (100%) rename {app/linux => linux}/runner/main.cc (100%) rename {app/linux => linux}/runner/my_application.cc (100%) rename {app/linux => linux}/runner/my_application.h (100%) rename {app/macos => macos}/.gitignore (100%) rename {app/macos => macos}/Flutter/Flutter-Debug.xcconfig (100%) rename {app/macos => macos}/Flutter/Flutter-Release.xcconfig (100%) rename {app/macos => macos}/Flutter/GeneratedPluginRegistrant.swift (100%) rename {app/macos => macos}/Runner.xcodeproj/project.pbxproj (100%) rename {app/macos => macos}/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {app/macos => macos}/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (100%) rename {app/macos => macos}/Runner.xcworkspace/contents.xcworkspacedata (100%) rename {app/macos => macos}/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {app/macos => macos}/Runner/AppDelegate.swift (100%) rename {app/macos => macos}/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {app/macos => macos}/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png (100%) rename {app/macos => macos}/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png (100%) rename {app/macos => macos}/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png (100%) rename {app/macos => macos}/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png (100%) rename {app/macos => macos}/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png (100%) rename {app/macos => macos}/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png (100%) rename {app/macos => macos}/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png (100%) rename {app/macos => macos}/Runner/Base.lproj/MainMenu.xib (100%) rename {app/macos => macos}/Runner/Configs/AppInfo.xcconfig (100%) rename {app/macos => macos}/Runner/Configs/Debug.xcconfig (100%) rename {app/macos => macos}/Runner/Configs/Release.xcconfig (100%) rename {app/macos => macos}/Runner/Configs/Warnings.xcconfig (100%) rename {app/macos => macos}/Runner/DebugProfile.entitlements (100%) rename {app/macos => macos}/Runner/Info.plist (100%) rename {app/macos => macos}/Runner/MainFlutterWindow.swift (100%) rename {app/macos => macos}/Runner/Release.entitlements (100%) rename {app/macos => macos}/RunnerTests/RunnerTests.swift (100%) rename {app/native => native}/linux-x64/BUILD.md (100%) rename {app/native => native}/linux-x64/WASMTIME-LICENSE (100%) rename {app/native => native}/linux-x64/libtree-sitter.so (100%) rename {app/test => test}/a11y/contrast_test.dart (96%) rename {app/test => test}/a11y/i18n_coverage_test.dart (97%) rename {app/test => test}/a11y/keyboard_traversal_test.dart (96%) rename {app/test => test}/a11y/semantic_coverage_test.dart (87%) rename {app/test => test}/builtin/claude/session_naming_test.dart (92%) rename {app/test => test}/builtin/default_layout/widget_test.dart (91%) rename {app/test => test}/builtin/ipc_status/widget_test.dart (91%) rename {app/test => test}/builtin/theme_picker/widget_test.dart (96%) rename {app/test => test}/builtin/welcome/widget_test.dart (87%) rename {app/test => test}/extension/src/contribution_test.dart (94%) rename {app/test => test}/extension/src/host_test.dart (97%) rename {app/test => test}/extension/src/manifest_test.dart (97%) rename {app/test => test}/goldens/clide_button_goldens_test.dart (97%) rename {app/test => test}/goldens/clide_icon_goldens_test.dart (95%) rename {app/test => test}/goldens/clide_tab_bar_goldens_test.dart (97%) rename {app/test => test}/goldens/goldens/ci/clide_button.png (100%) rename {app/test => test}/goldens/goldens/ci/clide_icon.png (100%) rename {app/test => test}/goldens/goldens/ci/clide_tab_bar.png (100%) rename {app/test => test}/goldens/goldens/linux/clide_button.png (100%) rename {app/test => test}/goldens/goldens/linux/clide_icon.png (100%) rename {app/test => test}/goldens/goldens/linux/clide_tab_bar.png (100%) rename {app/test => test}/helpers/fake_ipc.dart (96%) rename {app/test => test}/helpers/golden_harness.dart (100%) rename {app/test => test}/helpers/kernel_fixture.dart (98%) rename {app/test => test}/helpers/widget_harness.dart (92%) rename {app/test => test}/kernel/src/commands/keybindings_test.dart (96%) rename {app/test => test}/kernel/src/commands/palette_test.dart (94%) rename {app/test => test}/kernel/src/commands/registry_test.dart (93%) rename {app/test => test}/kernel/src/events/bus_test.dart (98%) rename {app/test => test}/kernel/src/extensions_manager_test.dart (98%) rename {app/test => test}/kernel/src/facade_test.dart (100%) rename {app/test => test}/kernel/src/i18n/i18n_test.dart (99%) rename {app/test => test}/kernel/src/log_test.dart (97%) rename {app/test => test}/kernel/src/panels/arrangement_test.dart (99%) rename {app/test => test}/kernel/src/panels/registry_test.dart (96%) rename {app/test => test}/kernel/src/settings_test.dart (98%) rename {app/test => test}/kernel/src/theme/controller_test.dart (98%) rename {app/test => test}/kernel/src/theme/loader_test.dart (97%) rename {app/test => test}/kernel/src/theme/resolver_test.dart (99%) rename {app/test => test}/widgets/clide_pane_chrome_test.dart (97%) rename {app/test => test}/widgets/src/clide_button_test.dart (98%) rename {app/test => test}/widgets/src/clide_divider_test.dart (95%) rename {app/test => test}/widgets/src/clide_icon_test.dart (95%) rename {app/test => test}/widgets/src/clide_surface_test.dart (97%) rename {app/test => test}/widgets/src/clide_tab_bar_test.dart (97%) rename {app/test => test}/widgets/src/clide_text_test.dart (96%) rename {app/web => web}/favicon.png (100%) rename {app/web => web}/icons/Icon-192.png (100%) rename {app/web => web}/icons/Icon-512.png (100%) rename {app/web => web}/icons/Icon-maskable-192.png (100%) rename {app/web => web}/icons/Icon-maskable-512.png (100%) rename {app/web => web}/index.html (100%) rename {app/web => web}/manifest.json (100%) diff --git a/.claude/skills/pql/.pql-install.json b/.claude/skills/pql/.pql-install.json index 929ddc5c..5801647b 100644 --- a/.claude/skills/pql/.pql-install.json +++ b/.claude/skills/pql/.pql-install.json @@ -1,5 +1,5 @@ { - "version": "1.0.0", - "hash": "sha256:98d7fa693fa4bcb6ccd6eb1d9d191c8f7332c9c97c221afb19741a7711bd9928", - "installed_at": "2026-04-22T11:22:39Z" + "version": "1.2.0", + "hash": "sha256:c3d0c50a4be25c7fe06c46e1c0a47ffbff4f632e1f820189c2d8abbce53ea0f8", + "installed_at": "2026-04-22T21:44:24Z" } diff --git a/.claude/skills/pql/SKILL.md b/.claude/skills/pql/SKILL.md index 176e2e6b..7eab8d09 100644 --- a/.claude/skills/pql/SKILL.md +++ b/.claude/skills/pql/SKILL.md @@ -120,15 +120,30 @@ Status flow: backlog → ready → in_progress → review → done (also cancell | Command | Purpose | |---|---| | `pql plan status` | Dashboard: decision counts, open Qs, ticket summary, coverage gaps | +| `pql plan export [--to FILE]` | Snapshot planning state to JSON (default: `pql-plan.json`) | +| `pql plan import [--from FILE]` | Restore planning state from a JSON snapshot | + +### Versioning planning state + +Planning state lives in `pql.db` (gitignored). To version it in git, +use `pql plan export` to write a committed JSON snapshot. pql does NOT +do this automatically — the user decides when and how to trigger it: + +- Pre-push hook: `.githooks/pre-push` calls `pql plan export && git add pql-plan.json` +- Sprint close: a skill or script exports + commits on milestone +- Manual: run `pql plan export` before committing when state changed + +On a fresh clone, `pql plan import` restores from the snapshot. ### Planning cookbook - **Sync and list confirmed** → `pql decisions sync && pql decisions list --type confirmed` - **Show with refs** → `pql decisions show D-005 --with-refs --pretty` - **Create ticket** → `pql ticket new task "implement X" --decision D-005` -- **Move forward** → `pql ticket status T-001 in_progress` +- **Batch close** → `pql ticket status T-001,T-002,T-003 done` - **Coverage gaps** → `pql decisions coverage` - **Dashboard** → `pql plan status --pretty` +- **Snapshot for git** → `pql plan export` --- diff --git a/.clide/settings.yaml b/.clide/settings.yaml new file mode 100644 index 00000000..62166a9e --- /dev/null +++ b/.clide/settings.yaml @@ -0,0 +1,6 @@ +project: + layout: + sidebar: + activeTab: files.tree + context: + activeTab: markdown.viewer diff --git a/.gitignore b/.gitignore index 7fca7911..0086247f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -# -- Flutter / Dart (app + core at repo root) --------------------------- +# -- Flutter / Dart (single package at repo root) ----------------------- /.dart_tool/ /.packages /.flutter-plugins @@ -16,18 +16,6 @@ /bin/clide.exe # pubspec.lock is committed (supply-chain policy). -# Flutter app sub-package under app/. Same patterns, different prefix. -app/.dart_tool/ -app/.flutter-plugins -app/.flutter-plugins-dependencies -app/build/ -app/*.iml -app/ios/Pods/ -app/macos/Pods/ -app/windows/flutter/ephemeral/ -app/linux/flutter/ephemeral/ -app/macos/Flutter/ephemeral/ - # UI harness (Playwright) — npm + output artefacts. tools/ui/node_modules/ tools/ui/out/ @@ -50,7 +38,7 @@ coverage.* # Alchemist golden-test failure artefacts (diff images written when a # pixel-compare fails locally; the committed fixtures live under # app/test/goldens/goldens/{ci,linux}/). -app/test/goldens/failures/ +test/goldens/failures/ # -- pql per-repo state (index + planning DB, rebuilt from markdown) ---- /.pql/ diff --git a/app/.metadata b/.metadata similarity index 100% rename from app/.metadata rename to .metadata diff --git a/Makefile b/Makefile index 5832bad8..7a86ac63 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,10 @@ # clide — local dev targets. CI scripts in ci/ shell out to these. # -# One toolchain: Flutter + Dart. Native supporter tools (`ptyc`, future -# peers) live in their own directories with their own build targets and -# compose in under `make build`. +# Single Flutter package at the repo root. Native supporter tools +# (ptyc, future peers) live in their own directories. INSTALL_DIR ?= $(HOME)/.local/bin -# Version stamping. Source of truth: project.yaml `version:` field. Local -# builds augment with git short SHA + dirty marker (semver build metadata). VERSION_BASE ?= $(shell awk -F': *' '/^version:/ {gsub(/[" ]/,"",$$2); print $$2; exit}' project.yaml) COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo unknown) DIRTY := $(shell git diff --quiet HEAD 2>/dev/null || echo .dirty) @@ -18,85 +15,30 @@ DATE ?= $(shell date -u +%Y-%m-%dT%H:%M:%SZ) help: ## Show this help. @awk 'BEGIN {FS = ":.*##"} /^[a-zA-Z0-9_-]+:.*##/ {printf " \033[36m%-22s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) -# -- app + core (Flutter / Dart) ---------------------------------------- - -# App and core targets gracefully noop if the Dart package isn't -# scaffolded yet (pre-Tier-0 state) or if flutter isn't installed -# locally. -APP_PRESENT := $(shell test -f pubspec.yaml && echo yes || echo no) -HAS_FLUTTER := $(shell command -v flutter >/dev/null && echo yes || echo no) - -.PHONY: build -build: ## Build the Dart AOT `clide` binary (CLI + --daemon modes in one binary). -ifeq ($(APP_PRESENT),yes) - dart compile exe bin/clide.dart -o bin/clide \ - --define=clideVersion=$(VERSION) \ - --define=clideCommit=$(COMMIT) \ - --define=clideDate=$(DATE) -else - @echo "(pubspec.yaml not scaffolded yet; skipping)" -endif - -DAEMON_PID_FILE := /tmp/clide-daemon-$(shell id -u).pid +# -- app (Flutter) ------------------------------------------------------- .PHONY: run -run: stop build ## Build the daemon + launch the Flutter desktop app. -ifeq ($(APP_PRESENT),yes) - @echo "Starting daemon…" - @bin/clide --daemon & echo $$! > $(DAEMON_PID_FILE) - @echo "Daemon PID $$(cat $(DAEMON_PID_FILE))" - @echo "Launching Flutter app…" - -cd app && LD_LIBRARY_PATH=$(CURDIR)/app/native/linux-x64$${LD_LIBRARY_PATH:+:$$LD_LIBRARY_PATH} flutter run -d linux - @$(MAKE) --no-print-directory stop -else - @echo "(pubspec.yaml not scaffolded yet; skipping)" -endif - -.PHONY: stop -stop: ## Kill any running clide daemon. - @if [ -f $(DAEMON_PID_FILE) ]; then \ - kill $$(cat $(DAEMON_PID_FILE)) 2>/dev/null && echo "daemon stopped" || true; \ - rm -f $(DAEMON_PID_FILE); \ - fi - -.PHONY: install -install: build ## Install bin/clide into $(INSTALL_DIR). -ifeq ($(APP_PRESENT),yes) - install -m 0755 bin/clide $(INSTALL_DIR)/clide -else - @echo "(pubspec.yaml not scaffolded yet; skipping)" -endif +run: ## Launch the Flutter desktop app. + LD_LIBRARY_PATH=$(CURDIR)/native/linux-x64$${LD_LIBRARY_PATH:+:$$LD_LIBRARY_PATH} flutter run -d linux .PHONY: pubget -pubget: ## flutter pub get (hydrate the pub cache). -ifeq ($(APP_PRESENT),yes) +pubget: ## flutter pub get. flutter pub get -else - @echo "(pubspec.yaml not scaffolded yet; skipping)" -endif .PHONY: analyze -analyze: ## dart analyze / flutter analyze. -ifeq ($(APP_PRESENT),yes) +analyze: ## flutter analyze. flutter analyze -else - @echo "(pubspec.yaml not scaffolded yet; skipping)" -endif .PHONY: format format: ## dart format --set-exit-if-changed. -ifeq ($(APP_PRESENT),yes) dart format --set-exit-if-changed . -else - @echo "(pubspec.yaml not scaffolded yet; skipping)" -endif .PHONY: test test: ## Fast: analyze + format + unit + widget + golden (<60s). ci/test.sh .PHONY: test-core -test-core: ## Flutter-free core tests (IPC, daemon, PTY) with hard timeout. +test-core: ## Core subsystem tests (IPC, PTY, git, pane registry). ci/test_core.sh .PHONY: test-a11y @@ -108,7 +50,7 @@ test-integration: ## Integration tests (real app boot; xvfb on headless Linux). ci/test_integration.sh .PHONY: test-e2e -test-e2e: build ## Daemon subprocess + web WASM Playwright smoke. +test-e2e: ## End-to-end Playwright smoke. ci/test_e2e.sh .PHONY: test-all @@ -122,7 +64,7 @@ coverage: ## flutter test --coverage + lcov summary. smoke-bundle: ## Build Linux release bundle and run it under xvfb for 5s. ci/smoke_bundle.sh -# -- web UI harness (for Claude Code to drive the app) ----------------- +# -- web UI harness ------------------------------------------------------ .PHONY: ui-dev ui-dev: ## Build web WASM + start localhost:4280 in the background. @@ -141,23 +83,14 @@ ui-smoke: ## Build + serve + run Playwright smoke + stop. .PHONY: build-linux build-linux: ## flutter build linux (desktop bundle). -ifeq ($(APP_PRESENT),yes) flutter build linux -else - @echo "(pubspec.yaml not scaffolded yet; skipping)" -endif .PHONY: build-macos build-macos: ## flutter build macos (desktop bundle). -ifeq ($(APP_PRESENT),yes) flutter build macos -else - @echo "(pubspec.yaml not scaffolded yet; skipping)" -endif -# -- ptyc (C supporter tool) -------------------------------------------- +# -- ptyc (C supporter tool) --------------------------------------------- -# Compiled alongside the main binary. Tiny, no deps beyond libc. PTYC_PRESENT := $(shell test -f ptyc/Makefile && echo yes || echo no) .PHONY: ptyc-build @@ -184,33 +117,32 @@ else @echo "(ptyc/ not scaffolded yet; skipping)" endif -# -- security ------------------------------------------------------------ +# -- security ------------------------------------------------------------- .PHONY: security -security: ## Dart advisory review + ptyc source review (manual — no floating deps). +security: ## Dart advisory review + ptyc source review. @echo "security: Dart advisories reviewed manually before pubspec.yaml bumps;" @echo " ptyc is reviewed by reading it (tiny libc-only C)." - @echo " Automated Dart CVE tooling lands here when a reliable option exists." -# -- pre-push gate ------------------------------------------------------- +# -- pre-push gate -------------------------------------------------------- .PHONY: decisions-validate -decisions-validate: ## Parser dry-run over decisions/*.md (cheap pre-push gate). +decisions-validate: ## Parser dry-run over decisions/*.md. pql decisions validate .PHONY: push-check -push-check: decisions-validate test-core test test-a11y ## Pre-push gate: decisions + core + fast unit + widget + golden + a11y (<90s). +push-check: decisions-validate test-core test test-a11y ## Pre-push gate. .PHONY: hooks -hooks: ## Install the repo's git hooks (points core.hooksPath at .githooks/). +hooks: ## Install the repo's git hooks. git config core.hooksPath .githooks @echo "hooks installed (core.hooksPath = .githooks)" -# -- housekeeping -------------------------------------------------------- +# -- housekeeping --------------------------------------------------------- .PHONY: clean clean: ## Remove build artefacts. - rm -rf bin build .dart_tool + rm -rf build .dart_tool $(MAKE) ptyc-clean .DEFAULT_GOAL := help diff --git a/app/analysis_options.yaml b/analysis_options.yaml similarity index 100% rename from app/analysis_options.yaml rename to analysis_options.yaml diff --git a/app/.gitignore b/app/.gitignore deleted file mode 100644 index 3820a95c..00000000 --- a/app/.gitignore +++ /dev/null @@ -1,45 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.build/ -.buildlog/ -.history -.svn/ -.swiftpm/ -migrate_working_dir/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins-dependencies -.pub-cache/ -.pub/ -/build/ -/coverage/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release diff --git a/app/README.md b/app/README.md deleted file mode 100644 index 2cf77c1a..00000000 --- a/app/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# clide_app - -A new Flutter project. diff --git a/app/lib/builtin/claude/src/extension.dart b/app/lib/builtin/claude/src/extension.dart deleted file mode 100644 index bfa39c84..00000000 --- a/app/lib/builtin/claude/src/extension.dart +++ /dev/null @@ -1,52 +0,0 @@ -import 'package:clide/clide.dart'; -import 'package:clide_app/builtin/claude/src/claude_pane.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; - -/// Claude pane. Primary per repo (tmux-persisted per D-041); optional -/// secondaries spawned via the `claude.new-secondary` command. -class ClaudeExtension extends ClideExtension { - @override - String get id => 'builtin.claude'; - @override - String get title => 'Claude'; - @override - String get version => '0.1.0'; - @override - List get dependsOn => const []; - - @override - List get contributions => [ - TabContribution( - id: 'claude.primary', - slot: Slots.workspace, - title: 'Claude', - titleKey: 'tab.title', - i18nNamespace: id, - priority: 90, // just before terminal (100) - build: (_) => const ClaudePane(isPrimary: true), - ), - CommandContribution( - id: 'claude.new-secondary', - command: 'claude.new-secondary', - title: 'Claude: open a secondary session', - run: (_) async { - // Secondary spawn is a UI-side concern (tab creation in - // the workspace slot). Returning OK signals the palette - // that the command exists; wiring the workspace-slot tab - // manager to open `ClaudePane(isPrimary: false, - // secondaryIndex: N)` on this command lands in a follow-up. - // D-041 policy is captured in the decision record either - // way. - return IpcResponse.ok( - id: '', - data: const { - 'status': 'accepted', - 'note': 'UI-side tab manager wires this up in a ' - 'follow-up commit.', - }, - ); - }, - ), - ]; -} diff --git a/app/pubspec.lock b/app/pubspec.lock deleted file mode 100644 index f8e14420..00000000 --- a/app/pubspec.lock +++ /dev/null @@ -1,347 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - alchemist: - dependency: "direct dev" - description: - name: alchemist - sha256: "4c5f5146b7539eb9a53211d81489f09f08fc3821f754a370f493477a9ef9e390" - url: "https://pub.dev" - source: hosted - version: "0.12.1" - async: - dependency: transitive - description: - name: async - sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37 - url: "https://pub.dev" - source: hosted - version: "2.13.1" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - characters: - dependency: transitive - description: - name: characters - sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b - url: "https://pub.dev" - source: hosted - version: "1.4.1" - clide: - dependency: "direct main" - description: - path: ".." - relative: true - source: path - version: "2.0.0-dev" - clock: - dependency: transitive - description: - name: clock - sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b - url: "https://pub.dev" - source: hosted - version: "1.1.2" - collection: - dependency: transitive - description: - name: collection - sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" - url: "https://pub.dev" - source: hosted - version: "1.19.1" - convert: - dependency: transitive - description: - name: convert - sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 - url: "https://pub.dev" - source: hosted - version: "3.1.2" - equatable: - dependency: transitive - description: - name: equatable - sha256: "3e0141505477fd8ad55d6eb4e7776d3fe8430be8e497ccb1521370c3f21a3e2b" - url: "https://pub.dev" - source: hosted - version: "2.0.8" - fake_async: - dependency: transitive - description: - name: fake_async - sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" - url: "https://pub.dev" - source: hosted - version: "1.3.3" - ffi: - dependency: transitive - description: - name: ffi - sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" - url: "https://pub.dev" - source: hosted - version: "2.1.3" - file: - dependency: transitive - description: - name: file - sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 - url: "https://pub.dev" - source: hosted - version: "7.0.1" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_driver: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1" - url: "https://pub.dev" - source: hosted - version: "6.0.0" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - fuchsia_remote_debug_protocol: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - integration_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - leak_tracker: - dependency: transitive - description: - name: leak_tracker - sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" - url: "https://pub.dev" - source: hosted - version: "11.0.2" - leak_tracker_flutter_testing: - dependency: transitive - description: - name: leak_tracker_flutter_testing - sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" - url: "https://pub.dev" - source: hosted - version: "3.0.10" - leak_tracker_testing: - dependency: transitive - description: - name: leak_tracker_testing - sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - lints: - dependency: transitive - description: - name: lints - sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df" - url: "https://pub.dev" - source: hosted - version: "6.1.0" - matcher: - dependency: transitive - description: - name: matcher - sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 - url: "https://pub.dev" - source: hosted - version: "0.12.19" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" - url: "https://pub.dev" - source: hosted - version: "0.13.0" - meta: - dependency: transitive - description: - name: meta - sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" - url: "https://pub.dev" - source: hosted - version: "1.17.0" - mocktail: - dependency: "direct dev" - description: - name: mocktail - sha256: "890df3f9688106f25755f26b1c60589a92b3ab91a22b8b224947ad041bf172d8" - url: "https://pub.dev" - source: hosted - version: "1.0.4" - path: - dependency: transitive - description: - name: path - sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" - url: "https://pub.dev" - source: hosted - version: "1.9.1" - platform: - dependency: transitive - description: - name: platform - sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" - url: "https://pub.dev" - source: hosted - version: "3.1.6" - process: - dependency: transitive - description: - name: process - sha256: c6248e4526673988586e8c00bb22a49210c258dc91df5227d5da9748ecf79744 - url: "https://pub.dev" - source: hosted - version: "5.0.5" - quiver: - dependency: transitive - description: - name: quiver - sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2 - url: "https://pub.dev" - source: hosted - version: "3.2.2" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - source_span: - dependency: transitive - description: - name: source_span - sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" - url: "https://pub.dev" - source: hosted - version: "1.10.2" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" - url: "https://pub.dev" - source: hosted - version: "1.12.1" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" - url: "https://pub.dev" - source: hosted - version: "1.4.1" - sync_http: - dependency: transitive - description: - name: sync_http - sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" - url: "https://pub.dev" - source: hosted - version: "0.3.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" - url: "https://pub.dev" - source: hosted - version: "1.2.2" - test_api: - dependency: transitive - description: - name: test_api - sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a" - url: "https://pub.dev" - source: hosted - version: "0.7.10" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 - url: "https://pub.dev" - source: hosted - version: "1.4.0" - vector_math: - dependency: transitive - description: - name: vector_math - sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b - url: "https://pub.dev" - source: hosted - version: "2.2.0" - vm_service: - dependency: transitive - description: - name: vm_service - sha256: "046d3928e16fa4dc46e8350415661755ab759d9fc97fc21b5ab295f71e4f0499" - url: "https://pub.dev" - source: hosted - version: "15.1.0" - webdriver: - dependency: transitive - description: - name: webdriver - sha256: "2f3a14ca026957870cfd9c635b83507e0e51d8091568e90129fbf805aba7cade" - url: "https://pub.dev" - source: hosted - version: "3.1.0" - xterm: - dependency: "direct main" - description: - name: xterm - sha256: "168dfedca77cba33fdb6f52e2cd001e9fde216e398e89335c19b524bb22da3a2" - url: "https://pub.dev" - source: hosted - version: "4.0.0" - yaml: - dependency: "direct main" - description: - name: yaml - sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce - url: "https://pub.dev" - source: hosted - version: "3.1.3" - zmodem: - dependency: transitive - description: - name: zmodem - sha256: "3b7e5b29f3a7d8aee472029b05165a68438eff2f3f7766edf13daba1e297adbf" - url: "https://pub.dev" - source: hosted - version: "0.0.6" -sdks: - dart: ">=3.9.0-0 <4.0.0" - flutter: ">=3.32.0" diff --git a/app/pubspec.yaml b/app/pubspec.yaml deleted file mode 100644 index 100e7f88..00000000 --- a/app/pubspec.yaml +++ /dev/null @@ -1,117 +0,0 @@ -# clide_app — Flutter desktop UI. -# -# Renders clide's IDE surfaces; depends on the root `clide` Dart core -# package (shared with the CLI + daemon). Prefer-zero-deps; every -# third-party entry below is exact-pinned and justified. No carets. - -name: clide_app -description: >- - Flutter desktop IDE for Claude Code — renders the UI. Talks to the - Dart core (CLI + daemon) via IPC; all PTY/subprocess/filesystem work - lives in the daemon (D-005). -publish_to: none -version: 2.0.0-dev -repository: https://git.schweitz.net/jpmschweitzer/clide - -environment: - sdk: ">=3.5.0 <4.0.0" - flutter: ">=3.19.0" - -dependencies: - flutter: - sdk: flutter - - # Dart core — shared types, IPC protocol, anything CLI + daemon + app - # all import. Kept Flutter-free so `dart compile exe` produces a lean - # static binary (see D-005). - clide: - path: ../ - - # YAML — the one justified exception to prefer-zero-deps. Dart-team - # maintained, used for theme files and extension manifests. - yaml: 3.1.3 - - # xterm.dart — Flutter-native terminal emulator (ANSI / xterm / truecolor - # parser + renderer). Writing a vt100/ANSI parser that handles everything - # tmux / neovim / claude emit would be weeks of work for no fidelity - # win. Listed in licenses.yaml per D-042. MIT. - xterm: 4.0.0 - -dev_dependencies: - flutter_test: - sdk: flutter - flutter_lints: 6.0.0 - - # Integration tests for the real-app startup-regression gate. - integration_test: - sdk: flutter - - # Mocks at IO/IPC boundaries; hand-rolled fakes for ChangeNotifiers. - mocktail: 1.0.4 - - # Golden-test framework (Ahem font, cross-platform pixel stability). - # Used only for widget primitives, not compositions. - alchemist: 0.12.1 - -flutter: - uses-material-design: false - - assets: - - lib/kernel/src/theme/themes/ - - lib/kernel/src/i18n/catalog/ - # Licensing — read by the About screen. `licenses.yaml` is the - # manifest (self + runtime deps + dev deps); each `license_file` - # pointer must also be a bundled asset so the About screen can - # display each dependency's full license text at runtime. - # Root LICENSE is mirrored into assets/LICENSE for the same reason - # (root paths can't be referenced from a Flutter package's assets). - # See CLAUDE.md "Dependencies & supply chain" and D-042. - - assets/licenses.yaml - - assets/LICENSE - - assets/fonts/jetbrains_mono/OFL.txt - - assets/fonts/josefin_sans/OFL.txt - - assets/fonts/phosphor/LICENSE - - assets/logo/clide-logo.svg - - assets/logo/clide-logo-16.png - - assets/logo/clide-logo-32.png - - assets/logo/clide-logo-48.png - - assets/logo/clide-logo-192.png - - assets/logo/clide-logo-256.png - - assets/logo/clide-logo-512.png - - assets/logo/clide-logo-1024.png - # Tree-sitter WASM grammars and highlight queries. - - assets/grammars/ - - assets/queries/ - - # Bundled fonts. OFL-licensed; license files live alongside each. - # - # JosefinSans — UI default. Variable font covers weights 100-700 - # plus an italic axis companion; we default to Light (300) per the - # project's aesthetic direction. - # - # JetBrainsMono — terminal / code surfaces. Static weights keep - # rendering predictable across xterm.dart, goldens, and CI. - fonts: - - family: JosefinSans - fonts: - - asset: assets/fonts/josefin_sans/JosefinSans-VariableFont.ttf - - asset: assets/fonts/josefin_sans/JosefinSans-Italic-VariableFont.ttf - style: italic - - - family: Phosphor - fonts: - - asset: assets/fonts/phosphor/Phosphor.ttf - - asset: assets/fonts/phosphor/Phosphor-Bold.ttf - weight: 700 - - asset: assets/fonts/phosphor/Phosphor-Fill.ttf - - - family: JetBrainsMono - fonts: - - asset: assets/fonts/jetbrains_mono/JetBrainsMono-Regular.ttf - - asset: assets/fonts/jetbrains_mono/JetBrainsMono-Italic.ttf - style: italic - - asset: assets/fonts/jetbrains_mono/JetBrainsMono-Bold.ttf - weight: 700 - - asset: assets/fonts/jetbrains_mono/JetBrainsMono-BoldItalic.ttf - weight: 700 - style: italic diff --git a/app/assets/LICENSE b/assets/LICENSE similarity index 100% rename from app/assets/LICENSE rename to assets/LICENSE diff --git a/app/assets/fonts/jetbrains_mono/JetBrainsMono-Bold.ttf b/assets/fonts/jetbrains_mono/JetBrainsMono-Bold.ttf similarity index 100% rename from app/assets/fonts/jetbrains_mono/JetBrainsMono-Bold.ttf rename to assets/fonts/jetbrains_mono/JetBrainsMono-Bold.ttf diff --git a/app/assets/fonts/jetbrains_mono/JetBrainsMono-BoldItalic.ttf b/assets/fonts/jetbrains_mono/JetBrainsMono-BoldItalic.ttf similarity index 100% rename from app/assets/fonts/jetbrains_mono/JetBrainsMono-BoldItalic.ttf rename to assets/fonts/jetbrains_mono/JetBrainsMono-BoldItalic.ttf diff --git a/app/assets/fonts/jetbrains_mono/JetBrainsMono-Italic.ttf b/assets/fonts/jetbrains_mono/JetBrainsMono-Italic.ttf similarity index 100% rename from app/assets/fonts/jetbrains_mono/JetBrainsMono-Italic.ttf rename to assets/fonts/jetbrains_mono/JetBrainsMono-Italic.ttf diff --git a/app/assets/fonts/jetbrains_mono/JetBrainsMono-Regular.ttf b/assets/fonts/jetbrains_mono/JetBrainsMono-Regular.ttf similarity index 100% rename from app/assets/fonts/jetbrains_mono/JetBrainsMono-Regular.ttf rename to assets/fonts/jetbrains_mono/JetBrainsMono-Regular.ttf diff --git a/app/assets/fonts/jetbrains_mono/OFL.txt b/assets/fonts/jetbrains_mono/OFL.txt similarity index 100% rename from app/assets/fonts/jetbrains_mono/OFL.txt rename to assets/fonts/jetbrains_mono/OFL.txt diff --git a/app/assets/fonts/josefin_sans/JosefinSans-Italic-VariableFont.ttf b/assets/fonts/josefin_sans/JosefinSans-Italic-VariableFont.ttf similarity index 100% rename from app/assets/fonts/josefin_sans/JosefinSans-Italic-VariableFont.ttf rename to assets/fonts/josefin_sans/JosefinSans-Italic-VariableFont.ttf diff --git a/app/assets/fonts/josefin_sans/JosefinSans-VariableFont.ttf b/assets/fonts/josefin_sans/JosefinSans-VariableFont.ttf similarity index 100% rename from app/assets/fonts/josefin_sans/JosefinSans-VariableFont.ttf rename to assets/fonts/josefin_sans/JosefinSans-VariableFont.ttf diff --git a/app/assets/fonts/josefin_sans/OFL.txt b/assets/fonts/josefin_sans/OFL.txt similarity index 100% rename from app/assets/fonts/josefin_sans/OFL.txt rename to assets/fonts/josefin_sans/OFL.txt diff --git a/app/assets/fonts/phosphor/LICENSE b/assets/fonts/phosphor/LICENSE similarity index 100% rename from app/assets/fonts/phosphor/LICENSE rename to assets/fonts/phosphor/LICENSE diff --git a/app/assets/fonts/phosphor/Phosphor-Bold.ttf b/assets/fonts/phosphor/Phosphor-Bold.ttf similarity index 100% rename from app/assets/fonts/phosphor/Phosphor-Bold.ttf rename to assets/fonts/phosphor/Phosphor-Bold.ttf diff --git a/app/assets/fonts/phosphor/Phosphor-Fill.ttf b/assets/fonts/phosphor/Phosphor-Fill.ttf similarity index 100% rename from app/assets/fonts/phosphor/Phosphor-Fill.ttf rename to assets/fonts/phosphor/Phosphor-Fill.ttf diff --git a/app/assets/fonts/phosphor/Phosphor.ttf b/assets/fonts/phosphor/Phosphor.ttf similarity index 100% rename from app/assets/fonts/phosphor/Phosphor.ttf rename to assets/fonts/phosphor/Phosphor.ttf diff --git a/app/assets/grammars/bash.wasm b/assets/grammars/bash.wasm similarity index 100% rename from app/assets/grammars/bash.wasm rename to assets/grammars/bash.wasm diff --git a/app/assets/grammars/c-sharp.wasm b/assets/grammars/c-sharp.wasm similarity index 100% rename from app/assets/grammars/c-sharp.wasm rename to assets/grammars/c-sharp.wasm diff --git a/app/assets/grammars/c.wasm b/assets/grammars/c.wasm similarity index 100% rename from app/assets/grammars/c.wasm rename to assets/grammars/c.wasm diff --git a/app/assets/grammars/comment.wasm b/assets/grammars/comment.wasm similarity index 100% rename from app/assets/grammars/comment.wasm rename to assets/grammars/comment.wasm diff --git a/app/assets/grammars/cpp.wasm b/assets/grammars/cpp.wasm similarity index 100% rename from app/assets/grammars/cpp.wasm rename to assets/grammars/cpp.wasm diff --git a/app/assets/grammars/css.wasm b/assets/grammars/css.wasm similarity index 100% rename from app/assets/grammars/css.wasm rename to assets/grammars/css.wasm diff --git a/app/assets/grammars/dart.wasm b/assets/grammars/dart.wasm similarity index 100% rename from app/assets/grammars/dart.wasm rename to assets/grammars/dart.wasm diff --git a/app/assets/grammars/diff.wasm b/assets/grammars/diff.wasm similarity index 100% rename from app/assets/grammars/diff.wasm rename to assets/grammars/diff.wasm diff --git a/app/assets/grammars/dockerfile.wasm b/assets/grammars/dockerfile.wasm similarity index 100% rename from app/assets/grammars/dockerfile.wasm rename to assets/grammars/dockerfile.wasm diff --git a/app/assets/grammars/elixir.wasm b/assets/grammars/elixir.wasm similarity index 100% rename from app/assets/grammars/elixir.wasm rename to assets/grammars/elixir.wasm diff --git a/app/assets/grammars/erlang.wasm b/assets/grammars/erlang.wasm similarity index 100% rename from app/assets/grammars/erlang.wasm rename to assets/grammars/erlang.wasm diff --git a/app/assets/grammars/gdscript.wasm b/assets/grammars/gdscript.wasm similarity index 100% rename from app/assets/grammars/gdscript.wasm rename to assets/grammars/gdscript.wasm diff --git a/app/assets/grammars/git-config.wasm b/assets/grammars/git-config.wasm similarity index 100% rename from app/assets/grammars/git-config.wasm rename to assets/grammars/git-config.wasm diff --git a/app/assets/grammars/gitignore.wasm b/assets/grammars/gitignore.wasm similarity index 100% rename from app/assets/grammars/gitignore.wasm rename to assets/grammars/gitignore.wasm diff --git a/app/assets/grammars/glsl.wasm b/assets/grammars/glsl.wasm similarity index 100% rename from app/assets/grammars/glsl.wasm rename to assets/grammars/glsl.wasm diff --git a/app/assets/grammars/go.wasm b/assets/grammars/go.wasm similarity index 100% rename from app/assets/grammars/go.wasm rename to assets/grammars/go.wasm diff --git a/app/assets/grammars/haskell.wasm b/assets/grammars/haskell.wasm similarity index 100% rename from app/assets/grammars/haskell.wasm rename to assets/grammars/haskell.wasm diff --git a/app/assets/grammars/hcl.wasm b/assets/grammars/hcl.wasm similarity index 100% rename from app/assets/grammars/hcl.wasm rename to assets/grammars/hcl.wasm diff --git a/app/assets/grammars/hlsl.wasm b/assets/grammars/hlsl.wasm similarity index 100% rename from app/assets/grammars/hlsl.wasm rename to assets/grammars/hlsl.wasm diff --git a/app/assets/grammars/html.wasm b/assets/grammars/html.wasm similarity index 100% rename from app/assets/grammars/html.wasm rename to assets/grammars/html.wasm diff --git a/app/assets/grammars/java.wasm b/assets/grammars/java.wasm similarity index 100% rename from app/assets/grammars/java.wasm rename to assets/grammars/java.wasm diff --git a/app/assets/grammars/javascript.wasm b/assets/grammars/javascript.wasm similarity index 100% rename from app/assets/grammars/javascript.wasm rename to assets/grammars/javascript.wasm diff --git a/app/assets/grammars/json.wasm b/assets/grammars/json.wasm similarity index 100% rename from app/assets/grammars/json.wasm rename to assets/grammars/json.wasm diff --git a/app/assets/grammars/julia.wasm b/assets/grammars/julia.wasm similarity index 100% rename from app/assets/grammars/julia.wasm rename to assets/grammars/julia.wasm diff --git a/app/assets/grammars/just.wasm b/assets/grammars/just.wasm similarity index 100% rename from app/assets/grammars/just.wasm rename to assets/grammars/just.wasm diff --git a/app/assets/grammars/kotlin.wasm b/assets/grammars/kotlin.wasm similarity index 100% rename from app/assets/grammars/kotlin.wasm rename to assets/grammars/kotlin.wasm diff --git a/app/assets/grammars/lua.wasm b/assets/grammars/lua.wasm similarity index 100% rename from app/assets/grammars/lua.wasm rename to assets/grammars/lua.wasm diff --git a/app/assets/grammars/make.wasm b/assets/grammars/make.wasm similarity index 100% rename from app/assets/grammars/make.wasm rename to assets/grammars/make.wasm diff --git a/app/assets/grammars/markdown.wasm b/assets/grammars/markdown.wasm similarity index 100% rename from app/assets/grammars/markdown.wasm rename to assets/grammars/markdown.wasm diff --git a/app/assets/grammars/nickel.wasm b/assets/grammars/nickel.wasm similarity index 100% rename from app/assets/grammars/nickel.wasm rename to assets/grammars/nickel.wasm diff --git a/app/assets/grammars/nix.wasm b/assets/grammars/nix.wasm similarity index 100% rename from app/assets/grammars/nix.wasm rename to assets/grammars/nix.wasm diff --git a/app/assets/grammars/php.wasm b/assets/grammars/php.wasm similarity index 100% rename from app/assets/grammars/php.wasm rename to assets/grammars/php.wasm diff --git a/app/assets/grammars/proto.wasm b/assets/grammars/proto.wasm similarity index 100% rename from app/assets/grammars/proto.wasm rename to assets/grammars/proto.wasm diff --git a/app/assets/grammars/python.wasm b/assets/grammars/python.wasm similarity index 100% rename from app/assets/grammars/python.wasm rename to assets/grammars/python.wasm diff --git a/app/assets/grammars/r.wasm b/assets/grammars/r.wasm similarity index 100% rename from app/assets/grammars/r.wasm rename to assets/grammars/r.wasm diff --git a/app/assets/grammars/regex.wasm b/assets/grammars/regex.wasm similarity index 100% rename from app/assets/grammars/regex.wasm rename to assets/grammars/regex.wasm diff --git a/app/assets/grammars/ruby.wasm b/assets/grammars/ruby.wasm similarity index 100% rename from app/assets/grammars/ruby.wasm rename to assets/grammars/ruby.wasm diff --git a/app/assets/grammars/rust.wasm b/assets/grammars/rust.wasm similarity index 100% rename from app/assets/grammars/rust.wasm rename to assets/grammars/rust.wasm diff --git a/app/assets/grammars/sqlite.wasm b/assets/grammars/sqlite.wasm similarity index 100% rename from app/assets/grammars/sqlite.wasm rename to assets/grammars/sqlite.wasm diff --git a/app/assets/grammars/svelte.wasm b/assets/grammars/svelte.wasm similarity index 100% rename from app/assets/grammars/svelte.wasm rename to assets/grammars/svelte.wasm diff --git a/app/assets/grammars/swift.wasm b/assets/grammars/swift.wasm similarity index 100% rename from app/assets/grammars/swift.wasm rename to assets/grammars/swift.wasm diff --git a/app/assets/grammars/toml.wasm b/assets/grammars/toml.wasm similarity index 100% rename from app/assets/grammars/toml.wasm rename to assets/grammars/toml.wasm diff --git a/app/assets/grammars/typescript.wasm b/assets/grammars/typescript.wasm similarity index 100% rename from app/assets/grammars/typescript.wasm rename to assets/grammars/typescript.wasm diff --git a/app/assets/grammars/vue.wasm b/assets/grammars/vue.wasm similarity index 100% rename from app/assets/grammars/vue.wasm rename to assets/grammars/vue.wasm diff --git a/app/assets/grammars/wgsl.wasm b/assets/grammars/wgsl.wasm similarity index 100% rename from app/assets/grammars/wgsl.wasm rename to assets/grammars/wgsl.wasm diff --git a/app/assets/grammars/xml.wasm b/assets/grammars/xml.wasm similarity index 100% rename from app/assets/grammars/xml.wasm rename to assets/grammars/xml.wasm diff --git a/app/assets/grammars/yaml.wasm b/assets/grammars/yaml.wasm similarity index 100% rename from app/assets/grammars/yaml.wasm rename to assets/grammars/yaml.wasm diff --git a/app/assets/grammars/zig.wasm b/assets/grammars/zig.wasm similarity index 100% rename from app/assets/grammars/zig.wasm rename to assets/grammars/zig.wasm diff --git a/app/assets/licenses.yaml b/assets/licenses.yaml similarity index 100% rename from app/assets/licenses.yaml rename to assets/licenses.yaml diff --git a/app/assets/logo/clide-logo-1024.png b/assets/logo/clide-logo-1024.png similarity index 100% rename from app/assets/logo/clide-logo-1024.png rename to assets/logo/clide-logo-1024.png diff --git a/app/assets/logo/clide-logo-16.png b/assets/logo/clide-logo-16.png similarity index 100% rename from app/assets/logo/clide-logo-16.png rename to assets/logo/clide-logo-16.png diff --git a/app/assets/logo/clide-logo-192.png b/assets/logo/clide-logo-192.png similarity index 100% rename from app/assets/logo/clide-logo-192.png rename to assets/logo/clide-logo-192.png diff --git a/app/assets/logo/clide-logo-256.png b/assets/logo/clide-logo-256.png similarity index 100% rename from app/assets/logo/clide-logo-256.png rename to assets/logo/clide-logo-256.png diff --git a/app/assets/logo/clide-logo-32.png b/assets/logo/clide-logo-32.png similarity index 100% rename from app/assets/logo/clide-logo-32.png rename to assets/logo/clide-logo-32.png diff --git a/app/assets/logo/clide-logo-48.png b/assets/logo/clide-logo-48.png similarity index 100% rename from app/assets/logo/clide-logo-48.png rename to assets/logo/clide-logo-48.png diff --git a/app/assets/logo/clide-logo-512.png b/assets/logo/clide-logo-512.png similarity index 100% rename from app/assets/logo/clide-logo-512.png rename to assets/logo/clide-logo-512.png diff --git a/app/assets/logo/clide-logo.svg b/assets/logo/clide-logo.svg similarity index 100% rename from app/assets/logo/clide-logo.svg rename to assets/logo/clide-logo.svg diff --git a/app/assets/queries/bash.scm b/assets/queries/bash.scm similarity index 100% rename from app/assets/queries/bash.scm rename to assets/queries/bash.scm diff --git a/app/assets/queries/c-sharp.scm b/assets/queries/c-sharp.scm similarity index 100% rename from app/assets/queries/c-sharp.scm rename to assets/queries/c-sharp.scm diff --git a/app/assets/queries/c.scm b/assets/queries/c.scm similarity index 100% rename from app/assets/queries/c.scm rename to assets/queries/c.scm diff --git a/app/assets/queries/comment.scm b/assets/queries/comment.scm similarity index 100% rename from app/assets/queries/comment.scm rename to assets/queries/comment.scm diff --git a/app/assets/queries/cpp.scm b/assets/queries/cpp.scm similarity index 100% rename from app/assets/queries/cpp.scm rename to assets/queries/cpp.scm diff --git a/app/assets/queries/css.scm b/assets/queries/css.scm similarity index 100% rename from app/assets/queries/css.scm rename to assets/queries/css.scm diff --git a/app/assets/queries/dart.scm b/assets/queries/dart.scm similarity index 100% rename from app/assets/queries/dart.scm rename to assets/queries/dart.scm diff --git a/app/assets/queries/diff.scm b/assets/queries/diff.scm similarity index 100% rename from app/assets/queries/diff.scm rename to assets/queries/diff.scm diff --git a/app/assets/queries/dockerfile.scm b/assets/queries/dockerfile.scm similarity index 100% rename from app/assets/queries/dockerfile.scm rename to assets/queries/dockerfile.scm diff --git a/app/assets/queries/elixir.scm b/assets/queries/elixir.scm similarity index 100% rename from app/assets/queries/elixir.scm rename to assets/queries/elixir.scm diff --git a/app/assets/queries/erlang.scm b/assets/queries/erlang.scm similarity index 100% rename from app/assets/queries/erlang.scm rename to assets/queries/erlang.scm diff --git a/app/assets/queries/gdscript.scm b/assets/queries/gdscript.scm similarity index 100% rename from app/assets/queries/gdscript.scm rename to assets/queries/gdscript.scm diff --git a/app/assets/queries/git-config.scm b/assets/queries/git-config.scm similarity index 100% rename from app/assets/queries/git-config.scm rename to assets/queries/git-config.scm diff --git a/app/assets/queries/gitignore.scm b/assets/queries/gitignore.scm similarity index 100% rename from app/assets/queries/gitignore.scm rename to assets/queries/gitignore.scm diff --git a/app/assets/queries/glsl.scm b/assets/queries/glsl.scm similarity index 100% rename from app/assets/queries/glsl.scm rename to assets/queries/glsl.scm diff --git a/app/assets/queries/go.scm b/assets/queries/go.scm similarity index 100% rename from app/assets/queries/go.scm rename to assets/queries/go.scm diff --git a/app/assets/queries/haskell.scm b/assets/queries/haskell.scm similarity index 100% rename from app/assets/queries/haskell.scm rename to assets/queries/haskell.scm diff --git a/app/assets/queries/hcl.scm b/assets/queries/hcl.scm similarity index 100% rename from app/assets/queries/hcl.scm rename to assets/queries/hcl.scm diff --git a/app/assets/queries/hlsl.scm b/assets/queries/hlsl.scm similarity index 100% rename from app/assets/queries/hlsl.scm rename to assets/queries/hlsl.scm diff --git a/app/assets/queries/html.scm b/assets/queries/html.scm similarity index 100% rename from app/assets/queries/html.scm rename to assets/queries/html.scm diff --git a/app/assets/queries/java.scm b/assets/queries/java.scm similarity index 100% rename from app/assets/queries/java.scm rename to assets/queries/java.scm diff --git a/app/assets/queries/javascript.scm b/assets/queries/javascript.scm similarity index 100% rename from app/assets/queries/javascript.scm rename to assets/queries/javascript.scm diff --git a/app/assets/queries/json.scm b/assets/queries/json.scm similarity index 100% rename from app/assets/queries/json.scm rename to assets/queries/json.scm diff --git a/app/assets/queries/julia.scm b/assets/queries/julia.scm similarity index 100% rename from app/assets/queries/julia.scm rename to assets/queries/julia.scm diff --git a/app/assets/queries/just.scm b/assets/queries/just.scm similarity index 100% rename from app/assets/queries/just.scm rename to assets/queries/just.scm diff --git a/app/assets/queries/kotlin.scm b/assets/queries/kotlin.scm similarity index 100% rename from app/assets/queries/kotlin.scm rename to assets/queries/kotlin.scm diff --git a/app/assets/queries/lua.scm b/assets/queries/lua.scm similarity index 100% rename from app/assets/queries/lua.scm rename to assets/queries/lua.scm diff --git a/app/assets/queries/make.scm b/assets/queries/make.scm similarity index 100% rename from app/assets/queries/make.scm rename to assets/queries/make.scm diff --git a/app/assets/queries/markdown.scm b/assets/queries/markdown.scm similarity index 100% rename from app/assets/queries/markdown.scm rename to assets/queries/markdown.scm diff --git a/app/assets/queries/nickel.scm b/assets/queries/nickel.scm similarity index 100% rename from app/assets/queries/nickel.scm rename to assets/queries/nickel.scm diff --git a/app/assets/queries/nix.scm b/assets/queries/nix.scm similarity index 100% rename from app/assets/queries/nix.scm rename to assets/queries/nix.scm diff --git a/app/assets/queries/php.scm b/assets/queries/php.scm similarity index 100% rename from app/assets/queries/php.scm rename to assets/queries/php.scm diff --git a/app/assets/queries/proto.scm b/assets/queries/proto.scm similarity index 100% rename from app/assets/queries/proto.scm rename to assets/queries/proto.scm diff --git a/app/assets/queries/python.scm b/assets/queries/python.scm similarity index 100% rename from app/assets/queries/python.scm rename to assets/queries/python.scm diff --git a/app/assets/queries/r.scm b/assets/queries/r.scm similarity index 100% rename from app/assets/queries/r.scm rename to assets/queries/r.scm diff --git a/app/assets/queries/regex.scm b/assets/queries/regex.scm similarity index 100% rename from app/assets/queries/regex.scm rename to assets/queries/regex.scm diff --git a/app/assets/queries/ruby.scm b/assets/queries/ruby.scm similarity index 100% rename from app/assets/queries/ruby.scm rename to assets/queries/ruby.scm diff --git a/app/assets/queries/rust.scm b/assets/queries/rust.scm similarity index 100% rename from app/assets/queries/rust.scm rename to assets/queries/rust.scm diff --git a/app/assets/queries/sqlite.scm b/assets/queries/sqlite.scm similarity index 100% rename from app/assets/queries/sqlite.scm rename to assets/queries/sqlite.scm diff --git a/app/assets/queries/svelte.scm b/assets/queries/svelte.scm similarity index 100% rename from app/assets/queries/svelte.scm rename to assets/queries/svelte.scm diff --git a/app/assets/queries/swift.scm b/assets/queries/swift.scm similarity index 100% rename from app/assets/queries/swift.scm rename to assets/queries/swift.scm diff --git a/app/assets/queries/toml.scm b/assets/queries/toml.scm similarity index 100% rename from app/assets/queries/toml.scm rename to assets/queries/toml.scm diff --git a/app/assets/queries/typescript.scm b/assets/queries/typescript.scm similarity index 100% rename from app/assets/queries/typescript.scm rename to assets/queries/typescript.scm diff --git a/app/assets/queries/vue.scm b/assets/queries/vue.scm similarity index 100% rename from app/assets/queries/vue.scm rename to assets/queries/vue.scm diff --git a/app/assets/queries/wgsl.scm b/assets/queries/wgsl.scm similarity index 100% rename from app/assets/queries/wgsl.scm rename to assets/queries/wgsl.scm diff --git a/app/assets/queries/xml.scm b/assets/queries/xml.scm similarity index 100% rename from app/assets/queries/xml.scm rename to assets/queries/xml.scm diff --git a/app/assets/queries/yaml.scm b/assets/queries/yaml.scm similarity index 100% rename from app/assets/queries/yaml.scm rename to assets/queries/yaml.scm diff --git a/app/assets/queries/zig.scm b/assets/queries/zig.scm similarity index 100% rename from app/assets/queries/zig.scm rename to assets/queries/zig.scm diff --git a/decisions/architecture.md b/decisions/architecture.md index b9e7e740..40ad0401 100644 --- a/decisions/architecture.md +++ b/decisions/architecture.md @@ -97,6 +97,7 @@ Core, rendering, IPC, kernel, panel manager. ### D-005: Dart core; sidecar dissolved; `ptyc` as pql-peer - **Date:** 2026-04-20 (was ADR 0005; supersedes [R-002](rejected.md#r-002-go-sidecar)) +- **Amendment (2026-04-23):** The separate daemon process and two-package layout are dissolved per [D-056](#d-056-dissolve-daemon-process-flutter-app-hosts-ipc-server). Dart-core and ptyc-as-peer principles survive; the daemon binary does not. - **Decision:** Three moves. **(1) Dart is the core language.** Everything that used to live under `sidecar/` — IPC server, CLI dispatch, process management, file watching, git shell-outs, pql wrapper — is written in Dart. Two execution modes of one Dart AOT binary: `clide ` (one-shot, pql-style) and `clide --daemon` (long-running, owns PTYs and subprocesses, survives app restarts). The Flutter app imports the Dart core as a library *and* connects to the daemon over IPC. **(2) The sidecar directory dissolves.** Layout is `app/` (Flutter UI), `lib/` (Dart core), `bin/clide.dart` (AOT entry), `ptyc/` (C helper), no `sidecar/`, no Go module. **(3) `ptyc` is a pql-peer supporter tool.** Small C binary that does `posix_openpt` + `fork` + `exec` + fd-passing via `SCM_RIGHTS`; clide wraps it the same way it wraps pql. Shells out for every PTY (terminal pane, tmux session, Claude, LSP server, debug adapter — one code path). Consumers other than clide can use `ptyc` standalone. - **Context:** [R-002](rejected.md#r-002-go-sidecar) picked Go for the sidecar/CLI on two premises: (a) the heavy work belongs in a language separate from the UI layer, and (b) pql is Go so the muscle memory transfers. On reassessment, both premises broke: the "heavy work" is I/O-bound glue that `dart:io` covers cleanly — the real choice was **separate process vs shared language**, and separate-process is what matters. PTY is the one place Dart is genuinely weak (multi-threaded VM can't safely `fork()`), and once you accept a small native helper, *nothing else* needs to be in the same language. - **Rationale:** One toolchain for the IDE proper (Flutter + Dart). C toolchain needed only to build `ptyc` — tiny, rarely-changing. Session persistence stays because PTY master fds live in the Dart daemon process, not the app. `ptyc` naming: **p** for *project* (parallel to pql's *project query language*), **ptyc** reads as both "PTY + child" (domain vocabulary) and "PTY + C" (implementation language). Usable from Dart, Python, Go, shell — anywhere a subprocess can be spawned and a fd received. @@ -207,4 +208,22 @@ Core, rendering, IPC, kernel, panel manager. - **Cross-reference:** [D-041](#d-041-claude-panes-one-primary-per-repo-tmux-backed), [D-047](#d-047-interaction-model-claude-is-home-layout), [D-048](#d-048-chrome-budget-no-tabs-no-breadcrumbs-keyboard-first). - **Raised by:** 2026-04-23 interaction model refinement. +### D-056: Dissolve daemon process; Flutter app hosts IPC server +- **Date:** 2026-04-23 +- **Decision:** The separate Dart daemon process (`clide --daemon`) and the two-package repo layout (`lib/` core + `app/` Flutter) are dissolved. The Flutter app moves to the repo root (one `pubspec.yaml`) and hosts the IPC server in-process. All subsystem handlers (pane, files, editor, git, pql) run inside the Flutter process. The `bin/clide.dart` AOT binary is removed. The CLI surface for Claude (`clide `) becomes a thin C client — either a new peer of `ptyc` or a mode within `ptyc` itself — that connects to the app's unix socket, sends a JSON-lines request, prints the response, and exits. tmux owns session persistence (it already did per [D-041](#d-041-claude-panes-one-primary-per-repo-tmux-backed)); the daemon's PTY ownership was redundant. +- **Amendment to [D-005](#d-005-dart-core-sidecar-dissolved-ptyc-as-pql-peer):** D-005's "two execution modes of one Dart AOT binary" premise assumed the daemon needed to outlive the app to preserve PTY sessions. tmux already solves this — `tmux new-session -A` re-attaches regardless of which process originally spawned it. The daemon process added complexity (two packages, two build targets, IPC client/server split, process lifecycle management) without a benefit tmux doesn't already provide. D-005's other principles survive: Dart is the core language, `ptyc` is a C peer of pql, one language for the IDE proper. +- **Repo layout after dissolution:** + - `/pubspec.yaml` — single Flutter package (was `app/pubspec.yaml`) + - `/lib/` — all Dart code: kernel, extensions, widgets, subsystem handlers + - `/bin/` — empty or removed (CLI is a C binary now) + - `/test/` — all tests + - `/assets/` — fonts, themes, grammars, licenses + - `/ptyc/` — C PTY helper (unchanged) + - `/native/` — vendored native libs (libtree-sitter.so) + - `/decisions/`, `/docs/`, `/legacy/` — unchanged +- **Rationale:** One package means one `pubspec.yaml`, one `flutter analyze`, one `flutter test`, no `cd` gymnastics, no cross-package import barriers. The IPC server running in-process eliminates the daemon lifecycle (start, stop, reconnect, pid file). If the app crashes, tmux sessions survive; the app re-attaches on restart. The CLI client in C is ~100 lines (socket connect + JSON exchange) with the same contract as pql. +- **Cost:** If the Flutter app is not running, Claude's `clide` commands fail. In practice this is acceptable — the IDE being closed means the user isn't working. A future "headless mode" could start the Flutter engine without a window if needed. +- **Cross-reference:** [D-005](#d-005-dart-core-sidecar-dissolved-ptyc-as-pql-peer) (amended), [D-041](#d-041-claude-panes-one-primary-per-repo-tmux-backed) (tmux persistence), [D-001](#d-001-cli-first-not-mcp) (CLI-first surface preserved via C client). +- **Raised by:** 2026-04-23 architectural simplification. + --- diff --git a/app/integration_test/app_starts_test.dart b/integration_test/app_starts_test.dart similarity index 86% rename from app/integration_test/app_starts_test.dart rename to integration_test/app_starts_test.dart index 9a183673..2c0f3125 100644 --- a/app/integration_test/app_starts_test.dart +++ b/integration_test/app_starts_test.dart @@ -1,11 +1,11 @@ import 'dart:io'; -import 'package:clide_app/app.dart'; -import 'package:clide_app/builtin/default_layout/default_layout.dart'; -import 'package:clide_app/builtin/ipc_status/ipc_status.dart'; -import 'package:clide_app/builtin/theme_picker/theme_picker.dart'; -import 'package:clide_app/builtin/welcome/welcome.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/app.dart'; +import 'package:clide/builtin/default_layout/default_layout.dart'; +import 'package:clide/builtin/ipc_status/ipc_status.dart'; +import 'package:clide/builtin/theme_picker/theme_picker.dart'; +import 'package:clide/builtin/welcome/welcome.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/services.dart' show rootBundle; import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; diff --git a/app/integration_test/extension_lifecycle_test.dart b/integration_test/extension_lifecycle_test.dart similarity index 86% rename from app/integration_test/extension_lifecycle_test.dart rename to integration_test/extension_lifecycle_test.dart index bacb9bb6..3afad9eb 100644 --- a/app/integration_test/extension_lifecycle_test.dart +++ b/integration_test/extension_lifecycle_test.dart @@ -1,10 +1,10 @@ import 'dart:io'; -import 'package:clide_app/app.dart'; -import 'package:clide_app/builtin/default_layout/default_layout.dart'; -import 'package:clide_app/builtin/ipc_status/ipc_status.dart'; -import 'package:clide_app/builtin/welcome/welcome.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/app.dart'; +import 'package:clide/builtin/default_layout/default_layout.dart'; +import 'package:clide/builtin/ipc_status/ipc_status.dart'; +import 'package:clide/builtin/welcome/welcome.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/services.dart' show rootBundle; import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; diff --git a/app/integration_test/theme_picker_test.dart b/integration_test/theme_picker_test.dart similarity index 86% rename from app/integration_test/theme_picker_test.dart rename to integration_test/theme_picker_test.dart index f1463d48..ca39f375 100644 --- a/app/integration_test/theme_picker_test.dart +++ b/integration_test/theme_picker_test.dart @@ -1,10 +1,10 @@ import 'dart:io'; -import 'package:clide_app/app.dart'; -import 'package:clide_app/builtin/default_layout/default_layout.dart'; -import 'package:clide_app/builtin/theme_picker/theme_picker.dart'; -import 'package:clide_app/builtin/welcome/welcome.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/app.dart'; +import 'package:clide/builtin/default_layout/default_layout.dart'; +import 'package:clide/builtin/theme_picker/theme_picker.dart'; +import 'package:clide/builtin/welcome/welcome.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/services.dart' show rootBundle; import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; diff --git a/app/lib/app.dart b/lib/app.dart similarity index 98% rename from app/lib/app.dart rename to lib/app.dart index 6c3bdf9b..fe6eb127 100644 --- a/app/lib/app.dart +++ b/lib/app.dart @@ -1,7 +1,7 @@ -import 'package:clide_app/builtin/welcome/src/welcome_view.dart'; -import 'package:clide_app/extension/src/contribution.dart'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/builtin/welcome/src/welcome_view.dart'; +import 'package:clide/extension/src/contribution.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; diff --git a/app/lib/builtin/canvas/canvas.dart b/lib/builtin/canvas/canvas.dart similarity index 100% rename from app/lib/builtin/canvas/canvas.dart rename to lib/builtin/canvas/canvas.dart diff --git a/app/lib/builtin/canvas/src/extension.dart b/lib/builtin/canvas/src/extension.dart similarity index 90% rename from app/lib/builtin/canvas/src/extension.dart rename to lib/builtin/canvas/src/extension.dart index bc2068ba..acaf98e8 100644 --- a/app/lib/builtin/canvas/src/extension.dart +++ b/lib/builtin/canvas/src/extension.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/extension/extension.dart'; +import 'package:clide/extension/extension.dart'; /// Tier-0 stub. Real implementation lands in a later tier; the extension /// is registered so the extensions-ui surface can list it as "installed, diff --git a/app/lib/builtin/claude/claude.dart b/lib/builtin/claude/claude.dart similarity index 100% rename from app/lib/builtin/claude/claude.dart rename to lib/builtin/claude/claude.dart diff --git a/app/lib/builtin/claude/src/claude_pane.dart b/lib/builtin/claude/src/claude_pane.dart similarity index 91% rename from app/lib/builtin/claude/src/claude_pane.dart rename to lib/builtin/claude/src/claude_pane.dart index ce179843..d13d6a6f 100644 --- a/app/lib/builtin/claude/src/claude_pane.dart +++ b/lib/builtin/claude/src/claude_pane.dart @@ -3,8 +3,8 @@ import 'dart:convert'; import 'dart:io'; import 'package:clide/clide.dart'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'package:xterm/xterm.dart'; @@ -28,10 +28,12 @@ class ClaudePane extends StatefulWidget { super.key, this.isPrimary = true, this.secondaryIndex, + this.showChrome = true, }) : assert(isPrimary || secondaryIndex != null, 'secondary panes need an index'); final bool isPrimary; + final bool showChrome; /// 1-based secondary-session index. Ignored when [isPrimary]. final int? secondaryIndex; @@ -48,7 +50,6 @@ class _ClaudePaneState extends State { String? _paneId; String? _error; String _statusLine = 'attaching…'; - int _pid = 0; @override void initState() { @@ -143,7 +144,7 @@ class _ClaudePaneState extends State { if (!mounted) return; _paneId = resp.data['id'] as String?; - _pid = (resp.data['pid'] as num?)?.toInt() ?? 0; + // PID available in resp.data['pid'] if needed for debugging. _subscribe(); setState(() {}); } @@ -201,11 +202,18 @@ class _ClaudePaneState extends State { final title = widget.isPrimary ? 'claude — primary' : 'claude — secondary ${widget.secondaryIndex}'; + final body = _error != null + ? Padding( + padding: const EdgeInsets.all(16), + child: ClideText(_error!, muted: true), + ) + : ClidePtyView(terminal: _terminal, label: title); + + if (!widget.showChrome) return body; + return ClidePaneChrome( title: title, - subtitle: _error ?? (_paneId == null ? _statusLine : '$_statusLine · pid $_pid'), - // Primary: no close affordance per D-041. Secondaries: close - // kills the tmux session. + subtitle: _error ?? _statusLine, onClose: widget.isPrimary ? null : () { @@ -214,15 +222,7 @@ class _ClaudePaneState extends State { unawaited(_ipc()?.request('pane.close', args: {'id': id})); } }, - child: _error != null - ? Padding( - padding: const EdgeInsets.all(16), - child: ClideText(_error!, muted: true), - ) - : ClidePtyView( - terminal: _terminal, - label: title, - ), + child: body, ); } } diff --git a/lib/builtin/claude/src/claude_session_host.dart b/lib/builtin/claude/src/claude_session_host.dart new file mode 100644 index 00000000..1ed8bc82 --- /dev/null +++ b/lib/builtin/claude/src/claude_session_host.dart @@ -0,0 +1,203 @@ +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; +import 'package:flutter/widgets.dart'; + +import 'claude_pane.dart'; + +class ClaudeSessionHost extends StatefulWidget { + const ClaudeSessionHost({super.key}); + + @override + State createState() => ClaudeSessionHostState(); +} + +class ClaudeSessionHostState extends State { + final List<_Session> _sessions = []; + int _activeIndex = 0; + int _nextSecondary = 1; + + @override + void initState() { + super.initState(); + _sessions.add(_Session(isPrimary: true, label: 'primary')); + } + + void addSecondary() { + final index = _nextSecondary++; + setState(() { + _sessions.add(_Session(isPrimary: false, secondaryIndex: index, label: 'session $index')); + _activeIndex = _sessions.length - 1; + }); + } + + void _close(int index) { + if (index < 0 || index >= _sessions.length) return; + if (_sessions[index].isPrimary) return; + setState(() { + _sessions.removeAt(index); + if (_activeIndex >= _sessions.length) _activeIndex = _sessions.length - 1; + if (_activeIndex < 0) _activeIndex = 0; + }); + } + + @override + Widget build(BuildContext context) { + final tokens = ClideTheme.of(context).surface; + final showTabs = _sessions.length > 1; + + return Column( + children: [ + if (showTabs) + _TabRow( + sessions: _sessions, + activeIndex: _activeIndex, + tokens: tokens, + onSelect: (i) => setState(() => _activeIndex = i), + onClose: _close, + onAdd: addSecondary, + ), + Expanded( + child: IndexedStack( + index: _activeIndex, + children: [ + for (final s in _sessions) + ClaudePane( + key: s.key, + isPrimary: s.isPrimary, + secondaryIndex: s.secondaryIndex, + showChrome: !showTabs, + ), + ], + ), + ), + ], + ); + } +} + +class _Session { + _Session({required this.isPrimary, this.secondaryIndex, required this.label}) : key = GlobalKey(); + final bool isPrimary; + final int? secondaryIndex; + final String label; + final GlobalKey key; +} + +class _TabRow extends StatelessWidget { + const _TabRow({ + required this.sessions, + required this.activeIndex, + required this.tokens, + required this.onSelect, + required this.onClose, + required this.onAdd, + }); + + final List<_Session> sessions; + final int activeIndex; + final SurfaceTokens tokens; + final ValueChanged onSelect; + final ValueChanged onClose; + final VoidCallback onAdd; + + @override + Widget build(BuildContext context) { + return GestureDetector( + onDoubleTap: onAdd, + child: Container( + height: 28, + decoration: BoxDecoration(border: Border(bottom: BorderSide(color: tokens.dividerColor))), + child: Row( + children: [ + for (var i = 0; i < sessions.length; i++) _Tab(session: sessions[i], active: i == activeIndex, tokens: tokens, onTap: () => onSelect(i), onClose: sessions[i].isPrimary ? null : () => onClose(i)), + const SizedBox(width: 4), + _AddButton(tokens: tokens, onTap: onAdd), + const Spacer(), + ], + ), + ), + ); + } +} + +class _Tab extends StatefulWidget { + const _Tab({required this.session, required this.active, required this.tokens, required this.onTap, this.onClose}); + final _Session session; + final bool active; + final SurfaceTokens tokens; + final VoidCallback onTap; + final VoidCallback? onClose; + + @override + State<_Tab> createState() => _TabState(); +} + +class _TabState extends State<_Tab> { + bool _hovered = false; + + @override + Widget build(BuildContext context) { + return MouseRegion( + cursor: SystemMouseCursors.click, + onEnter: (_) => setState(() => _hovered = true), + onExit: (_) => setState(() => _hovered = false), + child: GestureDetector( + onTap: widget.onTap, + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 10), + decoration: BoxDecoration( + color: _hovered && !widget.active ? widget.tokens.tabInactive : null, + border: Border(bottom: BorderSide(color: widget.active ? widget.tokens.tabActiveBorder : const Color(0x00000000), width: 2)), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + ClideText( + widget.session.label, + fontSize: 12, + color: widget.active ? widget.tokens.tabActiveForeground : widget.tokens.tabInactiveForeground, + fontFamily: clideMonoFamily, + ), + if (widget.onClose != null) ...[ + const SizedBox(width: 6), + GestureDetector( + onTap: widget.onClose, + child: ClideIcon(PhosphorIcons.xMark, size: 10, color: _hovered ? widget.tokens.globalForeground : widget.tokens.globalTextMuted), + ), + ], + ], + ), + ), + ), + ); + } +} + +class _AddButton extends StatefulWidget { + const _AddButton({required this.tokens, required this.onTap}); + final SurfaceTokens tokens; + final VoidCallback onTap; + + @override + State<_AddButton> createState() => _AddButtonState(); +} + +class _AddButtonState extends State<_AddButton> { + bool _hovered = false; + + @override + Widget build(BuildContext context) { + return MouseRegion( + cursor: SystemMouseCursors.click, + onEnter: (_) => setState(() => _hovered = true), + onExit: (_) => setState(() => _hovered = false), + child: GestureDetector( + onTap: widget.onTap, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 4), + child: ClideText('+', fontSize: 14, color: _hovered ? widget.tokens.globalForeground : widget.tokens.globalTextMuted), + ), + ), + ); + } +} diff --git a/lib/builtin/claude/src/extension.dart b/lib/builtin/claude/src/extension.dart new file mode 100644 index 00000000..c717a99e --- /dev/null +++ b/lib/builtin/claude/src/extension.dart @@ -0,0 +1,76 @@ +import 'package:clide/clide.dart'; +import 'package:clide/builtin/claude/src/claude_session_host.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:flutter/widgets.dart'; + +class ClaudeExtension extends ClideExtension { + @override + String get id => 'builtin.claude'; + @override + String get title => 'Claude'; + @override + String get version => '0.2.0'; + @override + List get dependsOn => const []; + + ClideExtensionContext? _ctx; + final GlobalKey _hostKey = GlobalKey(); + + @override + List get contributions => [ + TabContribution( + id: 'claude.primary', + slot: Slots.workspace, + title: 'Claude', + titleKey: 'tab.title', + i18nNamespace: id, + priority: 90, + build: (_) => ClaudeSessionHost(key: _hostKey), + ), + CommandContribution( + id: 'claude.new-secondary', + command: 'claude.new-secondary', + title: 'Claude: open a secondary session', + run: (_) async { + _hostKey.currentState?.addSecondary(); + return IpcResponse.ok(id: '', data: const {'status': 'spawned'}); + }, + ), + CommandContribution( + id: 'claude.kill-all-sessions', + command: 'claude.kill-all-sessions', + title: 'Claude: kill all tmux sessions for this repo', + run: _killAllSessions, + ), + ]; + + @override + Future activate(ClideExtensionContext ctx) async { + _ctx = ctx; + } + + @override + Future deactivate() async { + await _killAllSessions([]); + } + + Future _killAllSessions(List args) async { + final ctx = _ctx; + if (ctx == null) return IpcResponse.ok(id: '', data: const {}); + final resp = await ctx.ipc.request('pane.list'); + if (!resp.ok) return resp; + final panes = resp.data['panes']; + if (panes is List) { + for (final p in panes) { + if (p is Map && p['kind'] == 'claude') { + final id = p['id'] as String?; + if (id != null) { + await ctx.ipc.request('pane.close', args: {'id': id}); + } + } + } + } + return IpcResponse.ok(id: '', data: const {'status': 'killed'}); + } +} diff --git a/app/lib/builtin/claude/src/session_naming.dart b/lib/builtin/claude/src/session_naming.dart similarity index 100% rename from app/lib/builtin/claude/src/session_naming.dart rename to lib/builtin/claude/src/session_naming.dart diff --git a/app/lib/builtin/claude_control/claude_control.dart b/lib/builtin/claude_control/claude_control.dart similarity index 100% rename from app/lib/builtin/claude_control/claude_control.dart rename to lib/builtin/claude_control/claude_control.dart diff --git a/app/lib/builtin/claude_control/src/extension.dart b/lib/builtin/claude_control/src/extension.dart similarity index 93% rename from app/lib/builtin/claude_control/src/extension.dart rename to lib/builtin/claude_control/src/extension.dart index b0d82f97..136bd0b7 100644 --- a/app/lib/builtin/claude_control/src/extension.dart +++ b/lib/builtin/claude_control/src/extension.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/extension/extension.dart'; +import 'package:clide/extension/extension.dart'; /// Tier-reserved stub. Will surface a sidebar tab with sub-tabs /// Settings / Skills / Agents / Hooks / MCP — `.claude/` as a diff --git a/app/lib/builtin/decisions/decisions.dart b/lib/builtin/decisions/decisions.dart similarity index 100% rename from app/lib/builtin/decisions/decisions.dart rename to lib/builtin/decisions/decisions.dart diff --git a/app/lib/builtin/decisions/src/decisions_view.dart b/lib/builtin/decisions/src/decisions_view.dart similarity index 97% rename from app/lib/builtin/decisions/src/decisions_view.dart rename to lib/builtin/decisions/src/decisions_view.dart index 5754a31d..d63fa3cc 100644 --- a/app/lib/builtin/decisions/src/decisions_view.dart +++ b/lib/builtin/decisions/src/decisions_view.dart @@ -1,8 +1,8 @@ import 'dart:async'; import 'dart:convert'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; class DecisionsView extends StatefulWidget { diff --git a/app/lib/builtin/decisions/src/extension.dart b/lib/builtin/decisions/src/extension.dart similarity index 77% rename from app/lib/builtin/decisions/src/extension.dart rename to lib/builtin/decisions/src/extension.dart index 75ed0ce7..aaf601b1 100644 --- a/app/lib/builtin/decisions/src/extension.dart +++ b/lib/builtin/decisions/src/extension.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/builtin/decisions/src/decisions_view.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/decisions/src/decisions_view.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; class DecisionsExtension extends ClideExtension { @override diff --git a/app/lib/builtin/default_layout/default_layout.dart b/lib/builtin/default_layout/default_layout.dart similarity index 100% rename from app/lib/builtin/default_layout/default_layout.dart rename to lib/builtin/default_layout/default_layout.dart diff --git a/app/lib/builtin/default_layout/src/extension.dart b/lib/builtin/default_layout/src/extension.dart similarity index 99% rename from app/lib/builtin/default_layout/src/extension.dart rename to lib/builtin/default_layout/src/extension.dart index 912f50f5..4e094d9c 100644 --- a/app/lib/builtin/default_layout/src/extension.dart +++ b/lib/builtin/default_layout/src/extension.dart @@ -1,6 +1,6 @@ import 'package:clide/clide.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; class DefaultLayoutExtension extends ClideExtension { @override diff --git a/app/lib/builtin/diff/diff.dart b/lib/builtin/diff/diff.dart similarity index 100% rename from app/lib/builtin/diff/diff.dart rename to lib/builtin/diff/diff.dart diff --git a/app/lib/builtin/diff/src/diff_controller.dart b/lib/builtin/diff/src/diff_controller.dart similarity index 97% rename from app/lib/builtin/diff/src/diff_controller.dart rename to lib/builtin/diff/src/diff_controller.dart index 4dd71c74..816a6745 100644 --- a/app/lib/builtin/diff/src/diff_controller.dart +++ b/lib/builtin/diff/src/diff_controller.dart @@ -6,7 +6,7 @@ library; import 'dart:async'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/foundation.dart'; class DiffController extends ChangeNotifier { diff --git a/app/lib/builtin/diff/src/diff_view.dart b/lib/builtin/diff/src/diff_view.dart similarity index 99% rename from app/lib/builtin/diff/src/diff_view.dart rename to lib/builtin/diff/src/diff_view.dart index cd9e9e2a..c71a8b74 100644 --- a/app/lib/builtin/diff/src/diff_view.dart +++ b/lib/builtin/diff/src/diff_view.dart @@ -4,8 +4,8 @@ library; import 'dart:async'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'diff_controller.dart'; diff --git a/app/lib/builtin/diff/src/extension.dart b/lib/builtin/diff/src/extension.dart similarity index 77% rename from app/lib/builtin/diff/src/extension.dart rename to lib/builtin/diff/src/extension.dart index dd158505..03cd8a39 100644 --- a/app/lib/builtin/diff/src/extension.dart +++ b/lib/builtin/diff/src/extension.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/builtin/diff/src/diff_view.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/diff/src/diff_view.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; class DiffExtension extends ClideExtension { @override diff --git a/app/lib/builtin/editor/editor.dart b/lib/builtin/editor/editor.dart similarity index 100% rename from app/lib/builtin/editor/editor.dart rename to lib/builtin/editor/editor.dart diff --git a/app/lib/builtin/editor/src/editor_controller.dart b/lib/builtin/editor/src/editor_controller.dart similarity index 99% rename from app/lib/builtin/editor/src/editor_controller.dart rename to lib/builtin/editor/src/editor_controller.dart index 331e6119..8dcfe96b 100644 --- a/app/lib/builtin/editor/src/editor_controller.dart +++ b/lib/builtin/editor/src/editor_controller.dart @@ -13,7 +13,7 @@ library; import 'dart:async'; import 'package:clide/clide.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/foundation.dart'; class EditorController extends ChangeNotifier { diff --git a/app/lib/builtin/editor/src/editor_view.dart b/lib/builtin/editor/src/editor_view.dart similarity index 97% rename from app/lib/builtin/editor/src/editor_view.dart rename to lib/builtin/editor/src/editor_view.dart index 4b1d05a5..4010b308 100644 --- a/app/lib/builtin/editor/src/editor_view.dart +++ b/lib/builtin/editor/src/editor_view.dart @@ -1,9 +1,9 @@ import 'dart:async'; import 'package:clide/clide.dart'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/kernel/src/syntax/tree_sitter_service.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/kernel/src/syntax/tree_sitter_service.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; diff --git a/app/lib/builtin/editor/src/extension.dart b/lib/builtin/editor/src/extension.dart similarity index 82% rename from app/lib/builtin/editor/src/extension.dart rename to lib/builtin/editor/src/extension.dart index 41cc8409..b54e10a3 100644 --- a/app/lib/builtin/editor/src/extension.dart +++ b/lib/builtin/editor/src/extension.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/builtin/editor/src/editor_view.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/editor/src/editor_view.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; /// Tier-2 editor pane. Contributes a single workspace tab that /// renders the daemon's active buffer. Multi-file tabs live in the diff --git a/app/lib/builtin/editor/src/syntax_text_controller.dart b/lib/builtin/editor/src/syntax_text_controller.dart similarity index 95% rename from app/lib/builtin/editor/src/syntax_text_controller.dart rename to lib/builtin/editor/src/syntax_text_controller.dart index e9c05e1c..f443a7bf 100644 --- a/app/lib/builtin/editor/src/syntax_text_controller.dart +++ b/lib/builtin/editor/src/syntax_text_controller.dart @@ -2,9 +2,9 @@ library; import 'dart:convert'; -import 'package:clide_app/kernel/src/syntax/language_map.dart'; -import 'package:clide_app/kernel/src/syntax/tree_sitter_service.dart'; -import 'package:clide_app/kernel/src/theme/tokens.dart'; +import 'package:clide/kernel/src/syntax/language_map.dart'; +import 'package:clide/kernel/src/syntax/tree_sitter_service.dart'; +import 'package:clide/kernel/src/theme/tokens.dart'; import 'package:flutter/widgets.dart'; class SyntaxTextController extends TextEditingController { diff --git a/app/lib/builtin/extensions_ui/extensions_ui.dart b/lib/builtin/extensions_ui/extensions_ui.dart similarity index 100% rename from app/lib/builtin/extensions_ui/extensions_ui.dart rename to lib/builtin/extensions_ui/extensions_ui.dart diff --git a/app/lib/builtin/extensions_ui/src/extension.dart b/lib/builtin/extensions_ui/src/extension.dart similarity index 90% rename from app/lib/builtin/extensions_ui/src/extension.dart rename to lib/builtin/extensions_ui/src/extension.dart index 5f8b1e35..a32803b2 100644 --- a/app/lib/builtin/extensions_ui/src/extension.dart +++ b/lib/builtin/extensions_ui/src/extension.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/extension/extension.dart'; +import 'package:clide/extension/extension.dart'; /// Tier-0 stub. Real implementation lands in a later tier; the extension /// is registered so the extensions-ui surface can list it as "installed, diff --git a/app/lib/builtin/files/files.dart b/lib/builtin/files/files.dart similarity index 100% rename from app/lib/builtin/files/files.dart rename to lib/builtin/files/files.dart diff --git a/app/lib/builtin/files/src/extension.dart b/lib/builtin/files/src/extension.dart similarity index 82% rename from app/lib/builtin/files/src/extension.dart rename to lib/builtin/files/src/extension.dart index 0a75caa7..a78b6808 100644 --- a/app/lib/builtin/files/src/extension.dart +++ b/lib/builtin/files/src/extension.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/builtin/files/src/file_tree_view.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/files/src/file_tree_view.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; /// Workspace filesystem panel. Contributes a sidebar tab that renders /// the workspace file tree rooted at the git root, powered by the diff --git a/app/lib/builtin/files/src/file_tree_controller.dart b/lib/builtin/files/src/file_tree_controller.dart similarity index 98% rename from app/lib/builtin/files/src/file_tree_controller.dart rename to lib/builtin/files/src/file_tree_controller.dart index 0f7493cd..09ff1eb5 100644 --- a/app/lib/builtin/files/src/file_tree_controller.dart +++ b/lib/builtin/files/src/file_tree_controller.dart @@ -11,7 +11,7 @@ library; import 'dart:async'; import 'package:clide/clide.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/foundation.dart'; class FileTreeController extends ChangeNotifier { diff --git a/app/lib/builtin/files/src/file_tree_view.dart b/lib/builtin/files/src/file_tree_view.dart similarity index 98% rename from app/lib/builtin/files/src/file_tree_view.dart rename to lib/builtin/files/src/file_tree_view.dart index 15b53d36..c8a5a5b3 100644 --- a/app/lib/builtin/files/src/file_tree_view.dart +++ b/lib/builtin/files/src/file_tree_view.dart @@ -1,8 +1,8 @@ import 'dart:async'; import 'dart:io'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'file_tree_controller.dart'; diff --git a/app/lib/builtin/git/git.dart b/lib/builtin/git/git.dart similarity index 100% rename from app/lib/builtin/git/git.dart rename to lib/builtin/git/git.dart diff --git a/app/lib/builtin/git/src/extension.dart b/lib/builtin/git/src/extension.dart similarity index 75% rename from app/lib/builtin/git/src/extension.dart rename to lib/builtin/git/src/extension.dart index 606778f2..a5d0e796 100644 --- a/app/lib/builtin/git/src/extension.dart +++ b/lib/builtin/git/src/extension.dart @@ -1,7 +1,7 @@ -import 'package:clide_app/builtin/git/src/git_panel_view.dart'; -import 'package:clide_app/builtin/git/src/git_status_item.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/git/src/git_panel_view.dart'; +import 'package:clide/builtin/git/src/git_status_item.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; class GitExtension extends ClideExtension { @override diff --git a/app/lib/builtin/git/src/git_controller.dart b/lib/builtin/git/src/git_controller.dart similarity index 98% rename from app/lib/builtin/git/src/git_controller.dart rename to lib/builtin/git/src/git_controller.dart index 000e5a8a..d14e190b 100644 --- a/app/lib/builtin/git/src/git_controller.dart +++ b/lib/builtin/git/src/git_controller.dart @@ -8,7 +8,7 @@ library; import 'dart:async'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/foundation.dart'; class GitController extends ChangeNotifier { diff --git a/app/lib/builtin/git/src/git_panel_view.dart b/lib/builtin/git/src/git_panel_view.dart similarity index 99% rename from app/lib/builtin/git/src/git_panel_view.dart rename to lib/builtin/git/src/git_panel_view.dart index ec948c4c..8bfa4f97 100644 --- a/app/lib/builtin/git/src/git_panel_view.dart +++ b/lib/builtin/git/src/git_panel_view.dart @@ -5,8 +5,8 @@ library; import 'dart:async'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'git_controller.dart'; diff --git a/app/lib/builtin/git/src/git_status_item.dart b/lib/builtin/git/src/git_status_item.dart similarity index 98% rename from app/lib/builtin/git/src/git_status_item.dart rename to lib/builtin/git/src/git_status_item.dart index a86ba36d..0dfdba7a 100644 --- a/app/lib/builtin/git/src/git_status_item.dart +++ b/lib/builtin/git/src/git_status_item.dart @@ -1,7 +1,7 @@ import 'dart:async'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; class GitStatusItem extends StatefulWidget { diff --git a/app/lib/builtin/grammars_core/grammars_core.dart b/lib/builtin/grammars_core/grammars_core.dart similarity index 100% rename from app/lib/builtin/grammars_core/grammars_core.dart rename to lib/builtin/grammars_core/grammars_core.dart diff --git a/app/lib/builtin/grammars_core/src/extension.dart b/lib/builtin/grammars_core/src/extension.dart similarity index 91% rename from app/lib/builtin/grammars_core/src/extension.dart rename to lib/builtin/grammars_core/src/extension.dart index c6880586..373469f6 100644 --- a/app/lib/builtin/grammars_core/src/extension.dart +++ b/lib/builtin/grammars_core/src/extension.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/extension/extension.dart'; +import 'package:clide/extension/extension.dart'; /// Tier-0 stub. Real implementation lands in a later tier; the extension /// is registered so the extensions-ui surface can list it as "installed, diff --git a/app/lib/builtin/graph/graph.dart b/lib/builtin/graph/graph.dart similarity index 100% rename from app/lib/builtin/graph/graph.dart rename to lib/builtin/graph/graph.dart diff --git a/app/lib/builtin/graph/src/extension.dart b/lib/builtin/graph/src/extension.dart similarity index 78% rename from app/lib/builtin/graph/src/extension.dart rename to lib/builtin/graph/src/extension.dart index 692a084e..49708e53 100644 --- a/app/lib/builtin/graph/src/extension.dart +++ b/lib/builtin/graph/src/extension.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/builtin/graph/src/graph_view.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/graph/src/graph_view.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; class GraphExtension extends ClideExtension { @override diff --git a/app/lib/builtin/graph/src/graph_view.dart b/lib/builtin/graph/src/graph_view.dart similarity index 97% rename from app/lib/builtin/graph/src/graph_view.dart rename to lib/builtin/graph/src/graph_view.dart index 0823caa0..c0b09874 100644 --- a/app/lib/builtin/graph/src/graph_view.dart +++ b/lib/builtin/graph/src/graph_view.dart @@ -1,8 +1,8 @@ import 'dart:async'; import 'dart:convert'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; class GraphView extends StatefulWidget { diff --git a/app/lib/builtin/ipc_status/ipc_status.dart b/lib/builtin/ipc_status/ipc_status.dart similarity index 100% rename from app/lib/builtin/ipc_status/ipc_status.dart rename to lib/builtin/ipc_status/ipc_status.dart diff --git a/app/lib/builtin/ipc_status/src/extension.dart b/lib/builtin/ipc_status/src/extension.dart similarity index 79% rename from app/lib/builtin/ipc_status/src/extension.dart rename to lib/builtin/ipc_status/src/extension.dart index 62b015bf..f28d4d23 100644 --- a/app/lib/builtin/ipc_status/src/extension.dart +++ b/lib/builtin/ipc_status/src/extension.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/builtin/ipc_status/src/status_item.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/ipc_status/src/status_item.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; class IpcStatusExtension extends ClideExtension { @override diff --git a/app/lib/builtin/ipc_status/src/status_item.dart b/lib/builtin/ipc_status/src/status_item.dart similarity index 94% rename from app/lib/builtin/ipc_status/src/status_item.dart rename to lib/builtin/ipc_status/src/status_item.dart index 0228e2d5..11ef0f23 100644 --- a/app/lib/builtin/ipc_status/src/status_item.dart +++ b/lib/builtin/ipc_status/src/status_item.dart @@ -1,5 +1,5 @@ -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; class IpcStatusItem extends StatelessWidget { diff --git a/app/lib/builtin/keybindings_ui/keybindings_ui.dart b/lib/builtin/keybindings_ui/keybindings_ui.dart similarity index 100% rename from app/lib/builtin/keybindings_ui/keybindings_ui.dart rename to lib/builtin/keybindings_ui/keybindings_ui.dart diff --git a/app/lib/builtin/keybindings_ui/src/extension.dart b/lib/builtin/keybindings_ui/src/extension.dart similarity index 91% rename from app/lib/builtin/keybindings_ui/src/extension.dart rename to lib/builtin/keybindings_ui/src/extension.dart index 6fb913a3..c94aa25f 100644 --- a/app/lib/builtin/keybindings_ui/src/extension.dart +++ b/lib/builtin/keybindings_ui/src/extension.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/extension/extension.dart'; +import 'package:clide/extension/extension.dart'; /// Tier-0 stub. Real implementation lands in a later tier; the extension /// is registered so the extensions-ui surface can list it as "installed, diff --git a/app/lib/builtin/markdown/markdown.dart b/lib/builtin/markdown/markdown.dart similarity index 100% rename from app/lib/builtin/markdown/markdown.dart rename to lib/builtin/markdown/markdown.dart diff --git a/app/lib/builtin/markdown/src/extension.dart b/lib/builtin/markdown/src/extension.dart similarity index 78% rename from app/lib/builtin/markdown/src/extension.dart rename to lib/builtin/markdown/src/extension.dart index fe0fff24..42e13c6c 100644 --- a/app/lib/builtin/markdown/src/extension.dart +++ b/lib/builtin/markdown/src/extension.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/builtin/markdown/src/markdown_viewer.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/markdown/src/markdown_viewer.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; class MarkdownExtension extends ClideExtension { @override diff --git a/app/lib/builtin/markdown/src/markdown_viewer.dart b/lib/builtin/markdown/src/markdown_viewer.dart similarity index 96% rename from app/lib/builtin/markdown/src/markdown_viewer.dart rename to lib/builtin/markdown/src/markdown_viewer.dart index 30dbc145..19ccea07 100644 --- a/app/lib/builtin/markdown/src/markdown_viewer.dart +++ b/lib/builtin/markdown/src/markdown_viewer.dart @@ -1,7 +1,7 @@ import 'dart:async'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; class MarkdownViewer extends StatefulWidget { diff --git a/app/lib/builtin/pql/pql.dart b/lib/builtin/pql/pql.dart similarity index 100% rename from app/lib/builtin/pql/pql.dart rename to lib/builtin/pql/pql.dart diff --git a/app/lib/builtin/pql/src/backlinks_controller.dart b/lib/builtin/pql/src/backlinks_controller.dart similarity index 97% rename from app/lib/builtin/pql/src/backlinks_controller.dart rename to lib/builtin/pql/src/backlinks_controller.dart index b2aad7e4..3e70b5d1 100644 --- a/app/lib/builtin/pql/src/backlinks_controller.dart +++ b/lib/builtin/pql/src/backlinks_controller.dart @@ -4,7 +4,7 @@ library; import 'dart:async'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/foundation.dart'; class BacklinksController extends ChangeNotifier { diff --git a/app/lib/builtin/pql/src/backlinks_view.dart b/lib/builtin/pql/src/backlinks_view.dart similarity index 98% rename from app/lib/builtin/pql/src/backlinks_view.dart rename to lib/builtin/pql/src/backlinks_view.dart index 319d1982..40144df3 100644 --- a/app/lib/builtin/pql/src/backlinks_view.dart +++ b/lib/builtin/pql/src/backlinks_view.dart @@ -3,8 +3,8 @@ library; import 'dart:async'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'backlinks_controller.dart'; diff --git a/app/lib/builtin/pql/src/extension.dart b/lib/builtin/pql/src/extension.dart similarity index 78% rename from app/lib/builtin/pql/src/extension.dart rename to lib/builtin/pql/src/extension.dart index 075c07a7..e1887bb1 100644 --- a/app/lib/builtin/pql/src/extension.dart +++ b/lib/builtin/pql/src/extension.dart @@ -1,7 +1,7 @@ -import 'package:clide_app/builtin/pql/src/backlinks_view.dart'; -import 'package:clide_app/builtin/pql/src/pql_panel_view.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/pql/src/backlinks_view.dart'; +import 'package:clide/builtin/pql/src/pql_panel_view.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; class PqlExtension extends ClideExtension { @override diff --git a/app/lib/builtin/pql/src/pql_controller.dart b/lib/builtin/pql/src/pql_controller.dart similarity index 98% rename from app/lib/builtin/pql/src/pql_controller.dart rename to lib/builtin/pql/src/pql_controller.dart index b7a6d0d6..48b6fdbf 100644 --- a/app/lib/builtin/pql/src/pql_controller.dart +++ b/lib/builtin/pql/src/pql_controller.dart @@ -6,7 +6,7 @@ library; import 'dart:async'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/foundation.dart'; enum PqlView { files, query, decisions, tickets } diff --git a/app/lib/builtin/pql/src/pql_panel_view.dart b/lib/builtin/pql/src/pql_panel_view.dart similarity index 99% rename from app/lib/builtin/pql/src/pql_panel_view.dart rename to lib/builtin/pql/src/pql_panel_view.dart index e243c2fe..7d19badb 100644 --- a/app/lib/builtin/pql/src/pql_panel_view.dart +++ b/lib/builtin/pql/src/pql_panel_view.dart @@ -4,8 +4,8 @@ library; import 'dart:async'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'pql_controller.dart'; diff --git a/app/lib/builtin/problems/problems.dart b/lib/builtin/problems/problems.dart similarity index 100% rename from app/lib/builtin/problems/problems.dart rename to lib/builtin/problems/problems.dart diff --git a/app/lib/builtin/problems/src/extension.dart b/lib/builtin/problems/src/extension.dart similarity index 77% rename from app/lib/builtin/problems/src/extension.dart rename to lib/builtin/problems/src/extension.dart index 107e1d2e..5226ff96 100644 --- a/app/lib/builtin/problems/src/extension.dart +++ b/lib/builtin/problems/src/extension.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/builtin/problems/src/problems_view.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/problems/src/problems_view.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; class ProblemsExtension extends ClideExtension { @override diff --git a/app/lib/builtin/problems/src/problems_controller.dart b/lib/builtin/problems/src/problems_controller.dart similarity index 98% rename from app/lib/builtin/problems/src/problems_controller.dart rename to lib/builtin/problems/src/problems_controller.dart index 540a1950..c940372e 100644 --- a/app/lib/builtin/problems/src/problems_controller.dart +++ b/lib/builtin/problems/src/problems_controller.dart @@ -7,7 +7,7 @@ library; import 'dart:async'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/foundation.dart'; class Problem { diff --git a/app/lib/builtin/problems/src/problems_view.dart b/lib/builtin/problems/src/problems_view.dart similarity index 98% rename from app/lib/builtin/problems/src/problems_view.dart rename to lib/builtin/problems/src/problems_view.dart index 5c8c3752..22fde0c8 100644 --- a/app/lib/builtin/problems/src/problems_view.dart +++ b/lib/builtin/problems/src/problems_view.dart @@ -3,8 +3,8 @@ library; import 'dart:async'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'problems_controller.dart'; diff --git a/app/lib/builtin/settings_ui/settings_ui.dart b/lib/builtin/settings_ui/settings_ui.dart similarity index 100% rename from app/lib/builtin/settings_ui/settings_ui.dart rename to lib/builtin/settings_ui/settings_ui.dart diff --git a/app/lib/builtin/settings_ui/src/extension.dart b/lib/builtin/settings_ui/src/extension.dart similarity index 90% rename from app/lib/builtin/settings_ui/src/extension.dart rename to lib/builtin/settings_ui/src/extension.dart index b7a90330..3c3e9950 100644 --- a/app/lib/builtin/settings_ui/src/extension.dart +++ b/lib/builtin/settings_ui/src/extension.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/extension/extension.dart'; +import 'package:clide/extension/extension.dart'; /// Tier-0 stub. Real implementation lands in a later tier; the extension /// is registered so the extensions-ui surface can list it as "installed, diff --git a/app/lib/builtin/terminal/src/extension.dart b/lib/builtin/terminal/src/extension.dart similarity index 82% rename from app/lib/builtin/terminal/src/extension.dart rename to lib/builtin/terminal/src/extension.dart index 695cebeb..6438efa6 100644 --- a/app/lib/builtin/terminal/src/extension.dart +++ b/lib/builtin/terminal/src/extension.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/builtin/terminal/src/terminal_pane.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/terminal/src/terminal_pane.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; /// General-purpose terminal pane. Spawns `$SHELL` under a daemon-owned /// PTY; no Claude-specific behaviour. For the Claude pane with session diff --git a/app/lib/builtin/terminal/src/terminal_pane.dart b/lib/builtin/terminal/src/terminal_pane.dart similarity index 98% rename from app/lib/builtin/terminal/src/terminal_pane.dart rename to lib/builtin/terminal/src/terminal_pane.dart index 475efe29..5bfd2e07 100644 --- a/app/lib/builtin/terminal/src/terminal_pane.dart +++ b/lib/builtin/terminal/src/terminal_pane.dart @@ -4,8 +4,8 @@ import 'dart:io'; import 'dart:typed_data'; import 'package:clide/clide.dart'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'package:xterm/xterm.dart'; diff --git a/app/lib/builtin/terminal/terminal.dart b/lib/builtin/terminal/terminal.dart similarity index 100% rename from app/lib/builtin/terminal/terminal.dart rename to lib/builtin/terminal/terminal.dart diff --git a/app/lib/builtin/theme_picker/src/extension.dart b/lib/builtin/theme_picker/src/extension.dart similarity index 90% rename from app/lib/builtin/theme_picker/src/extension.dart rename to lib/builtin/theme_picker/src/extension.dart index a296f3bf..94c39629 100644 --- a/app/lib/builtin/theme_picker/src/extension.dart +++ b/lib/builtin/theme_picker/src/extension.dart @@ -1,6 +1,6 @@ import 'package:clide/clide.dart'; -import 'package:clide_app/builtin/theme_picker/src/picker_view.dart'; -import 'package:clide_app/extension/extension.dart'; +import 'package:clide/builtin/theme_picker/src/picker_view.dart'; +import 'package:clide/extension/extension.dart'; class ThemePickerExtension extends ClideExtension { @override diff --git a/app/lib/builtin/theme_picker/src/picker_view.dart b/lib/builtin/theme_picker/src/picker_view.dart similarity index 98% rename from app/lib/builtin/theme_picker/src/picker_view.dart rename to lib/builtin/theme_picker/src/picker_view.dart index f4a838c1..2f1e8cfc 100644 --- a/app/lib/builtin/theme_picker/src/picker_view.dart +++ b/lib/builtin/theme_picker/src/picker_view.dart @@ -1,5 +1,5 @@ -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; class ThemePickerView extends StatefulWidget { diff --git a/app/lib/builtin/theme_picker/theme_picker.dart b/lib/builtin/theme_picker/theme_picker.dart similarity index 100% rename from app/lib/builtin/theme_picker/theme_picker.dart rename to lib/builtin/theme_picker/theme_picker.dart diff --git a/app/lib/builtin/tickets/src/extension.dart b/lib/builtin/tickets/src/extension.dart similarity index 77% rename from app/lib/builtin/tickets/src/extension.dart rename to lib/builtin/tickets/src/extension.dart index 53d610eb..80d32ba6 100644 --- a/app/lib/builtin/tickets/src/extension.dart +++ b/lib/builtin/tickets/src/extension.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/builtin/tickets/src/tickets_view.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/tickets/src/tickets_view.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; class TicketsExtension extends ClideExtension { @override diff --git a/app/lib/builtin/tickets/src/tickets_view.dart b/lib/builtin/tickets/src/tickets_view.dart similarity index 97% rename from app/lib/builtin/tickets/src/tickets_view.dart rename to lib/builtin/tickets/src/tickets_view.dart index 8f6c525f..7164b267 100644 --- a/app/lib/builtin/tickets/src/tickets_view.dart +++ b/lib/builtin/tickets/src/tickets_view.dart @@ -1,8 +1,8 @@ import 'dart:async'; import 'dart:convert'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; class TicketsView extends StatefulWidget { diff --git a/app/lib/builtin/tickets/tickets.dart b/lib/builtin/tickets/tickets.dart similarity index 100% rename from app/lib/builtin/tickets/tickets.dart rename to lib/builtin/tickets/tickets.dart diff --git a/app/lib/builtin/todos/src/extension.dart b/lib/builtin/todos/src/extension.dart similarity index 90% rename from app/lib/builtin/todos/src/extension.dart rename to lib/builtin/todos/src/extension.dart index c23a76c9..9d8d1b81 100644 --- a/app/lib/builtin/todos/src/extension.dart +++ b/lib/builtin/todos/src/extension.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/extension/extension.dart'; +import 'package:clide/extension/extension.dart'; /// Tier-0 stub. Real implementation lands in a later tier; the extension /// is registered so the extensions-ui surface can list it as "installed, diff --git a/app/lib/builtin/todos/todos.dart b/lib/builtin/todos/todos.dart similarity index 100% rename from app/lib/builtin/todos/todos.dart rename to lib/builtin/todos/todos.dart diff --git a/app/lib/builtin/welcome/src/extension.dart b/lib/builtin/welcome/src/extension.dart similarity index 84% rename from app/lib/builtin/welcome/src/extension.dart rename to lib/builtin/welcome/src/extension.dart index 1e7699fc..70ac287d 100644 --- a/app/lib/builtin/welcome/src/extension.dart +++ b/lib/builtin/welcome/src/extension.dart @@ -1,7 +1,7 @@ import 'package:clide/clide.dart'; -import 'package:clide_app/builtin/welcome/src/welcome_view.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/welcome/src/welcome_view.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; class WelcomeExtension extends ClideExtension { @override diff --git a/app/lib/builtin/welcome/src/welcome_view.dart b/lib/builtin/welcome/src/welcome_view.dart similarity index 99% rename from app/lib/builtin/welcome/src/welcome_view.dart rename to lib/builtin/welcome/src/welcome_view.dart index 61d79e0b..2a800770 100644 --- a/app/lib/builtin/welcome/src/welcome_view.dart +++ b/lib/builtin/welcome/src/welcome_view.dart @@ -1,7 +1,7 @@ import 'dart:async'; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; class WelcomeView extends StatelessWidget { diff --git a/app/lib/builtin/welcome/welcome.dart b/lib/builtin/welcome/welcome.dart similarity index 100% rename from app/lib/builtin/welcome/welcome.dart rename to lib/builtin/welcome/welcome.dart diff --git a/app/lib/extension/extension.dart b/lib/extension/extension.dart similarity index 100% rename from app/lib/extension/extension.dart rename to lib/extension/extension.dart diff --git a/app/lib/extension/src/contribution.dart b/lib/extension/src/contribution.dart similarity index 98% rename from app/lib/extension/src/contribution.dart rename to lib/extension/src/contribution.dart index d30daac7..09aa76ba 100644 --- a/app/lib/extension/src/contribution.dart +++ b/lib/extension/src/contribution.dart @@ -1,5 +1,5 @@ import 'package:clide/clide.dart'; -import 'package:clide_app/kernel/src/panels/slot_id.dart'; +import 'package:clide/kernel/src/panels/slot_id.dart'; import 'package:flutter/widgets.dart'; /// One atom contributed by a [ClideExtension]. Extensions declare N of diff --git a/app/lib/extension/src/extension.dart b/lib/extension/src/extension.dart similarity index 67% rename from app/lib/extension/src/extension.dart rename to lib/extension/src/extension.dart index 0b43c061..eaa1eaf1 100644 --- a/app/lib/extension/src/extension.dart +++ b/lib/extension/src/extension.dart @@ -1,24 +1,24 @@ -import 'package:clide_app/extension/src/contribution.dart'; -import 'package:clide_app/kernel/src/clipboard.dart'; -import 'package:clide_app/kernel/src/commands/palette.dart'; -import 'package:clide_app/kernel/src/commands/registry.dart'; -import 'package:clide_app/kernel/src/dialog.dart'; -import 'package:clide_app/kernel/src/events/bus.dart'; -import 'package:clide_app/kernel/src/files.dart'; -import 'package:clide_app/kernel/src/focus.dart'; -import 'package:clide_app/kernel/src/i18n/i18n.dart'; -import 'package:clide_app/kernel/src/ipc/client.dart'; -import 'package:clide_app/kernel/src/log.dart'; -import 'package:clide_app/kernel/src/net.dart'; -import 'package:clide_app/kernel/src/notify.dart'; -import 'package:clide_app/kernel/src/os.dart'; -import 'package:clide_app/kernel/src/panels/arrangement.dart'; -import 'package:clide_app/kernel/src/panels/registry.dart'; -import 'package:clide_app/kernel/src/project.dart'; -import 'package:clide_app/kernel/src/secrets.dart'; -import 'package:clide_app/kernel/src/settings.dart'; -import 'package:clide_app/kernel/src/theme/controller.dart'; -import 'package:clide_app/kernel/src/tray.dart'; +import 'package:clide/extension/src/contribution.dart'; +import 'package:clide/kernel/src/clipboard.dart'; +import 'package:clide/kernel/src/commands/palette.dart'; +import 'package:clide/kernel/src/commands/registry.dart'; +import 'package:clide/kernel/src/dialog.dart'; +import 'package:clide/kernel/src/events/bus.dart'; +import 'package:clide/kernel/src/files.dart'; +import 'package:clide/kernel/src/focus.dart'; +import 'package:clide/kernel/src/i18n/i18n.dart'; +import 'package:clide/kernel/src/ipc/client.dart'; +import 'package:clide/kernel/src/log.dart'; +import 'package:clide/kernel/src/net.dart'; +import 'package:clide/kernel/src/notify.dart'; +import 'package:clide/kernel/src/os.dart'; +import 'package:clide/kernel/src/panels/arrangement.dart'; +import 'package:clide/kernel/src/panels/registry.dart'; +import 'package:clide/kernel/src/project.dart'; +import 'package:clide/kernel/src/secrets.dart'; +import 'package:clide/kernel/src/settings.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; +import 'package:clide/kernel/src/tray.dart'; /// One shipping unit. Built-in extensions compile in as Dart subclasses; /// third-party extensions run as Lua scripts wrapped by a `LuaExtension` diff --git a/app/lib/extension/src/host.dart b/lib/extension/src/host.dart similarity index 95% rename from app/lib/extension/src/host.dart rename to lib/extension/src/host.dart index 90db520a..15b3f92a 100644 --- a/app/lib/extension/src/host.dart +++ b/lib/extension/src/host.dart @@ -1,6 +1,6 @@ import 'dart:io'; -import 'package:clide_app/extension/src/manifest.dart'; +import 'package:clide/extension/src/manifest.dart'; /// Scans the third-party extensions root for `manifest.yaml` files. /// diff --git a/app/lib/extension/src/manifest.dart b/lib/extension/src/manifest.dart similarity index 100% rename from app/lib/extension/src/manifest.dart rename to lib/extension/src/manifest.dart diff --git a/app/lib/kernel/kernel.dart b/lib/kernel/kernel.dart similarity index 100% rename from app/lib/kernel/kernel.dart rename to lib/kernel/kernel.dart diff --git a/app/lib/kernel/src/clipboard.dart b/lib/kernel/src/clipboard.dart similarity index 100% rename from app/lib/kernel/src/clipboard.dart rename to lib/kernel/src/clipboard.dart diff --git a/app/lib/kernel/src/commands/keybindings.dart b/lib/kernel/src/commands/keybindings.dart similarity index 100% rename from app/lib/kernel/src/commands/keybindings.dart rename to lib/kernel/src/commands/keybindings.dart diff --git a/app/lib/kernel/src/commands/palette.dart b/lib/kernel/src/commands/palette.dart similarity index 89% rename from app/lib/kernel/src/commands/palette.dart rename to lib/kernel/src/commands/palette.dart index cb28a2e3..0ce94298 100644 --- a/app/lib/kernel/src/commands/palette.dart +++ b/lib/kernel/src/commands/palette.dart @@ -1,5 +1,5 @@ -import 'package:clide_app/extension/src/contribution.dart'; -import 'package:clide_app/kernel/src/commands/registry.dart'; +import 'package:clide/extension/src/contribution.dart'; +import 'package:clide/kernel/src/commands/registry.dart'; import 'package:flutter/foundation.dart'; class PaletteController extends ChangeNotifier { diff --git a/app/lib/kernel/src/commands/registry.dart b/lib/kernel/src/commands/registry.dart similarity index 93% rename from app/lib/kernel/src/commands/registry.dart rename to lib/kernel/src/commands/registry.dart index 27036e9d..f0425eb1 100644 --- a/app/lib/kernel/src/commands/registry.dart +++ b/lib/kernel/src/commands/registry.dart @@ -1,5 +1,5 @@ import 'package:clide/clide.dart'; -import 'package:clide_app/extension/src/contribution.dart'; +import 'package:clide/extension/src/contribution.dart'; import 'package:flutter/foundation.dart'; class CommandRegistry extends ChangeNotifier { diff --git a/app/lib/kernel/src/dialog.dart b/lib/kernel/src/dialog.dart similarity index 100% rename from app/lib/kernel/src/dialog.dart rename to lib/kernel/src/dialog.dart diff --git a/app/lib/kernel/src/events/bus.dart b/lib/kernel/src/events/bus.dart similarity index 90% rename from app/lib/kernel/src/events/bus.dart rename to lib/kernel/src/events/bus.dart index a99bcc35..404f7ce5 100644 --- a/app/lib/kernel/src/events/bus.dart +++ b/lib/kernel/src/events/bus.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:clide_app/kernel/src/events/types.dart'; +import 'package:clide/kernel/src/events/types.dart'; class EventBus { EventBus(); diff --git a/app/lib/kernel/src/events/types.dart b/lib/kernel/src/events/types.dart similarity index 100% rename from app/lib/kernel/src/events/types.dart rename to lib/kernel/src/events/types.dart diff --git a/app/lib/kernel/src/extensions_manager.dart b/lib/kernel/src/extensions_manager.dart similarity index 84% rename from app/lib/kernel/src/extensions_manager.dart rename to lib/kernel/src/extensions_manager.dart index 7d6c9a6f..0da5479a 100644 --- a/app/lib/kernel/src/extensions_manager.dart +++ b/lib/kernel/src/extensions_manager.dart @@ -1,29 +1,29 @@ import 'dart:async'; -import 'package:clide_app/extension/src/contribution.dart'; -import 'package:clide_app/extension/src/extension.dart'; -import 'package:clide_app/kernel/src/clipboard.dart'; -import 'package:clide_app/kernel/src/commands/keybindings.dart'; -import 'package:clide_app/kernel/src/commands/palette.dart'; -import 'package:clide_app/kernel/src/commands/registry.dart'; -import 'package:clide_app/kernel/src/dialog.dart'; -import 'package:clide_app/kernel/src/events/bus.dart'; -import 'package:clide_app/kernel/src/events/types.dart'; -import 'package:clide_app/kernel/src/files.dart'; -import 'package:clide_app/kernel/src/focus.dart'; -import 'package:clide_app/kernel/src/i18n/i18n.dart'; -import 'package:clide_app/kernel/src/ipc/client.dart'; -import 'package:clide_app/kernel/src/log.dart'; -import 'package:clide_app/kernel/src/net.dart'; -import 'package:clide_app/kernel/src/notify.dart'; -import 'package:clide_app/kernel/src/os.dart'; -import 'package:clide_app/kernel/src/panels/arrangement.dart'; -import 'package:clide_app/kernel/src/panels/registry.dart'; -import 'package:clide_app/kernel/src/project.dart'; -import 'package:clide_app/kernel/src/secrets.dart'; -import 'package:clide_app/kernel/src/settings.dart'; -import 'package:clide_app/kernel/src/theme/controller.dart'; -import 'package:clide_app/kernel/src/tray.dart'; +import 'package:clide/extension/src/contribution.dart'; +import 'package:clide/extension/src/extension.dart'; +import 'package:clide/kernel/src/clipboard.dart'; +import 'package:clide/kernel/src/commands/keybindings.dart'; +import 'package:clide/kernel/src/commands/palette.dart'; +import 'package:clide/kernel/src/commands/registry.dart'; +import 'package:clide/kernel/src/dialog.dart'; +import 'package:clide/kernel/src/events/bus.dart'; +import 'package:clide/kernel/src/events/types.dart'; +import 'package:clide/kernel/src/files.dart'; +import 'package:clide/kernel/src/focus.dart'; +import 'package:clide/kernel/src/i18n/i18n.dart'; +import 'package:clide/kernel/src/ipc/client.dart'; +import 'package:clide/kernel/src/log.dart'; +import 'package:clide/kernel/src/net.dart'; +import 'package:clide/kernel/src/notify.dart'; +import 'package:clide/kernel/src/os.dart'; +import 'package:clide/kernel/src/panels/arrangement.dart'; +import 'package:clide/kernel/src/panels/registry.dart'; +import 'package:clide/kernel/src/project.dart'; +import 'package:clide/kernel/src/secrets.dart'; +import 'package:clide/kernel/src/settings.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; +import 'package:clide/kernel/src/tray.dart'; import 'package:flutter/foundation.dart'; class ExtensionManager extends ChangeNotifier { diff --git a/app/lib/kernel/src/facade.dart b/lib/kernel/src/facade.dart similarity index 80% rename from app/lib/kernel/src/facade.dart rename to lib/kernel/src/facade.dart index 718f5a81..4125ed2b 100644 --- a/app/lib/kernel/src/facade.dart +++ b/lib/kernel/src/facade.dart @@ -2,30 +2,30 @@ import 'dart:async'; import 'dart:io'; import 'package:clide/clide.dart'; -import 'package:clide_app/kernel/src/clipboard.dart'; -import 'package:clide_app/kernel/src/commands/keybindings.dart'; -import 'package:clide_app/kernel/src/commands/palette.dart'; -import 'package:clide_app/kernel/src/commands/registry.dart'; -import 'package:clide_app/kernel/src/dialog.dart'; -import 'package:clide_app/kernel/src/events/bus.dart'; -import 'package:clide_app/kernel/src/extensions_manager.dart'; -import 'package:clide_app/kernel/src/files.dart'; -import 'package:clide_app/kernel/src/focus.dart'; -import 'package:clide_app/kernel/src/i18n/catalog_loader.dart'; -import 'package:clide_app/kernel/src/i18n/i18n.dart'; -import 'package:clide_app/kernel/src/ipc/client.dart'; -import 'package:clide_app/kernel/src/log.dart'; -import 'package:clide_app/kernel/src/net.dart'; -import 'package:clide_app/kernel/src/notify.dart'; -import 'package:clide_app/kernel/src/os.dart'; -import 'package:clide_app/kernel/src/panels/arrangement.dart'; -import 'package:clide_app/kernel/src/panels/registry.dart'; -import 'package:clide_app/kernel/src/project.dart'; -import 'package:clide_app/kernel/src/secrets.dart'; -import 'package:clide_app/kernel/src/settings.dart'; -import 'package:clide_app/kernel/src/theme/controller.dart'; -import 'package:clide_app/kernel/src/theme/loader.dart'; -import 'package:clide_app/kernel/src/tray.dart'; +import 'package:clide/kernel/src/clipboard.dart'; +import 'package:clide/kernel/src/commands/keybindings.dart'; +import 'package:clide/kernel/src/commands/palette.dart'; +import 'package:clide/kernel/src/commands/registry.dart'; +import 'package:clide/kernel/src/dialog.dart'; +import 'package:clide/kernel/src/events/bus.dart'; +import 'package:clide/kernel/src/extensions_manager.dart'; +import 'package:clide/kernel/src/files.dart'; +import 'package:clide/kernel/src/focus.dart'; +import 'package:clide/kernel/src/i18n/catalog_loader.dart'; +import 'package:clide/kernel/src/i18n/i18n.dart'; +import 'package:clide/kernel/src/ipc/client.dart'; +import 'package:clide/kernel/src/log.dart'; +import 'package:clide/kernel/src/net.dart'; +import 'package:clide/kernel/src/notify.dart'; +import 'package:clide/kernel/src/os.dart'; +import 'package:clide/kernel/src/panels/arrangement.dart'; +import 'package:clide/kernel/src/panels/registry.dart'; +import 'package:clide/kernel/src/project.dart'; +import 'package:clide/kernel/src/secrets.dart'; +import 'package:clide/kernel/src/settings.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; +import 'package:clide/kernel/src/theme/loader.dart'; +import 'package:clide/kernel/src/tray.dart'; import 'package:flutter/widgets.dart'; /// Aggregated kernel services. Feature code that runs outside a diff --git a/app/lib/kernel/src/files.dart b/lib/kernel/src/files.dart similarity index 90% rename from app/lib/kernel/src/files.dart rename to lib/kernel/src/files.dart index e11565ff..bc532c19 100644 --- a/app/lib/kernel/src/files.dart +++ b/lib/kernel/src/files.dart @@ -1,8 +1,8 @@ import 'dart:async'; -import 'package:clide_app/kernel/src/events/bus.dart'; -import 'package:clide_app/kernel/src/events/types.dart'; -import 'package:clide_app/kernel/src/panels/slot_id.dart'; +import 'package:clide/kernel/src/events/bus.dart'; +import 'package:clide/kernel/src/events/types.dart'; +import 'package:clide/kernel/src/panels/slot_id.dart'; import 'package:flutter/foundation.dart'; class FilesDropped extends ClideEvent { diff --git a/app/lib/kernel/src/focus.dart b/lib/kernel/src/focus.dart similarity index 93% rename from app/lib/kernel/src/focus.dart rename to lib/kernel/src/focus.dart index 73ce32a8..821a296c 100644 --- a/app/lib/kernel/src/focus.dart +++ b/lib/kernel/src/focus.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/kernel/src/panels/slot_id.dart'; +import 'package:clide/kernel/src/panels/slot_id.dart'; import 'package:flutter/foundation.dart'; /// Tracks the currently focused contribution (tab id + slot). Backs diff --git a/app/lib/kernel/src/i18n/catalog/builtin.claude_en_us.json b/lib/kernel/src/i18n/catalog/builtin.claude_en_us.json similarity index 100% rename from app/lib/kernel/src/i18n/catalog/builtin.claude_en_us.json rename to lib/kernel/src/i18n/catalog/builtin.claude_en_us.json diff --git a/app/lib/kernel/src/i18n/catalog/builtin.default-layout_en_us.json b/lib/kernel/src/i18n/catalog/builtin.default-layout_en_us.json similarity index 100% rename from app/lib/kernel/src/i18n/catalog/builtin.default-layout_en_us.json rename to lib/kernel/src/i18n/catalog/builtin.default-layout_en_us.json diff --git a/app/lib/kernel/src/i18n/catalog/builtin.editor_en_us.json b/lib/kernel/src/i18n/catalog/builtin.editor_en_us.json similarity index 100% rename from app/lib/kernel/src/i18n/catalog/builtin.editor_en_us.json rename to lib/kernel/src/i18n/catalog/builtin.editor_en_us.json diff --git a/app/lib/kernel/src/i18n/catalog/builtin.files_en_us.json b/lib/kernel/src/i18n/catalog/builtin.files_en_us.json similarity index 100% rename from app/lib/kernel/src/i18n/catalog/builtin.files_en_us.json rename to lib/kernel/src/i18n/catalog/builtin.files_en_us.json diff --git a/app/lib/kernel/src/i18n/catalog/builtin.ipc-status_en_us.json b/lib/kernel/src/i18n/catalog/builtin.ipc-status_en_us.json similarity index 100% rename from app/lib/kernel/src/i18n/catalog/builtin.ipc-status_en_us.json rename to lib/kernel/src/i18n/catalog/builtin.ipc-status_en_us.json diff --git a/app/lib/kernel/src/i18n/catalog/builtin.terminal_en_us.json b/lib/kernel/src/i18n/catalog/builtin.terminal_en_us.json similarity index 100% rename from app/lib/kernel/src/i18n/catalog/builtin.terminal_en_us.json rename to lib/kernel/src/i18n/catalog/builtin.terminal_en_us.json diff --git a/app/lib/kernel/src/i18n/catalog/builtin.theme-picker_en_us.json b/lib/kernel/src/i18n/catalog/builtin.theme-picker_en_us.json similarity index 100% rename from app/lib/kernel/src/i18n/catalog/builtin.theme-picker_en_us.json rename to lib/kernel/src/i18n/catalog/builtin.theme-picker_en_us.json diff --git a/app/lib/kernel/src/i18n/catalog/builtin.welcome_en_us.json b/lib/kernel/src/i18n/catalog/builtin.welcome_en_us.json similarity index 100% rename from app/lib/kernel/src/i18n/catalog/builtin.welcome_en_us.json rename to lib/kernel/src/i18n/catalog/builtin.welcome_en_us.json diff --git a/app/lib/kernel/src/i18n/catalog_loader.dart b/lib/kernel/src/i18n/catalog_loader.dart similarity index 97% rename from app/lib/kernel/src/i18n/catalog_loader.dart rename to lib/kernel/src/i18n/catalog_loader.dart index 18850aab..4632f093 100644 --- a/app/lib/kernel/src/i18n/catalog_loader.dart +++ b/lib/kernel/src/i18n/catalog_loader.dart @@ -2,7 +2,7 @@ import 'dart:convert'; import 'dart:io'; import 'dart:ui'; -import 'package:clide_app/kernel/src/i18n/fallback_chain.dart'; +import 'package:clide/kernel/src/i18n/fallback_chain.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; diff --git a/app/lib/kernel/src/i18n/fallback_chain.dart b/lib/kernel/src/i18n/fallback_chain.dart similarity index 100% rename from app/lib/kernel/src/i18n/fallback_chain.dart rename to lib/kernel/src/i18n/fallback_chain.dart diff --git a/app/lib/kernel/src/i18n/i18n.dart b/lib/kernel/src/i18n/i18n.dart similarity index 96% rename from app/lib/kernel/src/i18n/i18n.dart rename to lib/kernel/src/i18n/i18n.dart index f25efd29..99832c44 100644 --- a/app/lib/kernel/src/i18n/i18n.dart +++ b/lib/kernel/src/i18n/i18n.dart @@ -1,8 +1,8 @@ import 'dart:ui'; -import 'package:clide_app/kernel/src/i18n/catalog_loader.dart'; -import 'package:clide_app/kernel/src/i18n/fallback_chain.dart'; -import 'package:clide_app/kernel/src/log.dart'; +import 'package:clide/kernel/src/i18n/catalog_loader.dart'; +import 'package:clide/kernel/src/i18n/fallback_chain.dart'; +import 'package:clide/kernel/src/log.dart'; import 'package:flutter/foundation.dart'; @immutable diff --git a/app/lib/kernel/src/ipc/client.dart b/lib/kernel/src/ipc/client.dart similarity index 96% rename from app/lib/kernel/src/ipc/client.dart rename to lib/kernel/src/ipc/client.dart index f0c410ec..acf68dc9 100644 --- a/app/lib/kernel/src/ipc/client.dart +++ b/lib/kernel/src/ipc/client.dart @@ -4,9 +4,9 @@ import 'dart:io'; import 'dart:math' as math; import 'package:clide/clide.dart'; -import 'package:clide_app/kernel/src/events/bus.dart'; -import 'package:clide_app/kernel/src/events/types.dart'; -import 'package:clide_app/kernel/src/log.dart'; +import 'package:clide/kernel/src/events/bus.dart'; +import 'package:clide/kernel/src/events/types.dart'; +import 'package:clide/kernel/src/log.dart'; import 'package:flutter/foundation.dart'; class DaemonClient extends ChangeNotifier { diff --git a/app/lib/kernel/src/log.dart b/lib/kernel/src/log.dart similarity index 100% rename from app/lib/kernel/src/log.dart rename to lib/kernel/src/log.dart diff --git a/app/lib/kernel/src/net.dart b/lib/kernel/src/net.dart similarity index 100% rename from app/lib/kernel/src/net.dart rename to lib/kernel/src/net.dart diff --git a/app/lib/kernel/src/notify.dart b/lib/kernel/src/notify.dart similarity index 100% rename from app/lib/kernel/src/notify.dart rename to lib/kernel/src/notify.dart diff --git a/app/lib/kernel/src/os.dart b/lib/kernel/src/os.dart similarity index 91% rename from app/lib/kernel/src/os.dart rename to lib/kernel/src/os.dart index 56e12cce..619b98aa 100644 --- a/app/lib/kernel/src/os.dart +++ b/lib/kernel/src/os.dart @@ -1,9 +1,9 @@ import 'dart:async'; import 'dart:io'; -import 'package:clide_app/kernel/src/events/bus.dart'; -import 'package:clide_app/kernel/src/events/types.dart'; -import 'package:clide_app/kernel/src/log.dart'; +import 'package:clide/kernel/src/events/bus.dart'; +import 'package:clide/kernel/src/events/types.dart'; +import 'package:clide/kernel/src/log.dart'; import 'package:flutter/foundation.dart'; class OsLifecycleEvent extends ClideEvent { diff --git a/app/lib/kernel/src/panels/arrangement.dart b/lib/kernel/src/panels/arrangement.dart similarity index 96% rename from app/lib/kernel/src/panels/arrangement.dart rename to lib/kernel/src/panels/arrangement.dart index 1547c551..43eaa105 100644 --- a/app/lib/kernel/src/panels/arrangement.dart +++ b/lib/kernel/src/panels/arrangement.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/extension/src/contribution.dart'; -import 'package:clide_app/kernel/src/panels/registry.dart'; -import 'package:clide_app/kernel/src/panels/slot_id.dart'; +import 'package:clide/extension/src/contribution.dart'; +import 'package:clide/kernel/src/panels/registry.dart'; +import 'package:clide/kernel/src/panels/slot_id.dart'; import 'package:flutter/foundation.dart'; class LayoutArrangement extends ChangeNotifier { diff --git a/app/lib/kernel/src/panels/drag_resize.dart b/lib/kernel/src/panels/drag_resize.dart similarity index 92% rename from app/lib/kernel/src/panels/drag_resize.dart rename to lib/kernel/src/panels/drag_resize.dart index eeec462e..c10a45e4 100644 --- a/app/lib/kernel/src/panels/drag_resize.dart +++ b/lib/kernel/src/panels/drag_resize.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/kernel/src/panels/arrangement.dart'; -import 'package:clide_app/kernel/src/panels/slot_id.dart'; -import 'package:clide_app/kernel/src/theme/controller.dart'; +import 'package:clide/kernel/src/panels/arrangement.dart'; +import 'package:clide/kernel/src/panels/slot_id.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; import 'package:flutter/widgets.dart'; /// A 4-px draggable splitter that adjusts the size of [slot] in the diff --git a/app/lib/kernel/src/panels/layout_preset.dart b/lib/kernel/src/panels/layout_preset.dart similarity index 91% rename from app/lib/kernel/src/panels/layout_preset.dart rename to lib/kernel/src/panels/layout_preset.dart index 9d7455c9..be2f285e 100644 --- a/app/lib/kernel/src/panels/layout_preset.dart +++ b/lib/kernel/src/panels/layout_preset.dart @@ -1,5 +1,5 @@ -import 'package:clide_app/extension/src/contribution.dart'; -import 'package:clide_app/kernel/src/panels/slot_id.dart'; +import 'package:clide/extension/src/contribution.dart'; +import 'package:clide/kernel/src/panels/slot_id.dart'; /// Canonical "three-column + statusbar" preset — the default-layout /// extension contributes this at Tier 0. Split out so tests and the diff --git a/app/lib/kernel/src/panels/registry.dart b/lib/kernel/src/panels/registry.dart similarity index 95% rename from app/lib/kernel/src/panels/registry.dart rename to lib/kernel/src/panels/registry.dart index 33f9eaab..16c5c0d2 100644 --- a/app/lib/kernel/src/panels/registry.dart +++ b/lib/kernel/src/panels/registry.dart @@ -1,5 +1,5 @@ -import 'package:clide_app/extension/src/contribution.dart'; -import 'package:clide_app/kernel/src/panels/slot_id.dart'; +import 'package:clide/extension/src/contribution.dart'; +import 'package:clide/kernel/src/panels/slot_id.dart'; import 'package:flutter/foundation.dart'; @immutable diff --git a/app/lib/kernel/src/panels/slot_id.dart b/lib/kernel/src/panels/slot_id.dart similarity index 100% rename from app/lib/kernel/src/panels/slot_id.dart rename to lib/kernel/src/panels/slot_id.dart diff --git a/app/lib/kernel/src/project.dart b/lib/kernel/src/project.dart similarity index 95% rename from app/lib/kernel/src/project.dart rename to lib/kernel/src/project.dart index 5d56c1d1..3c60092b 100644 --- a/app/lib/kernel/src/project.dart +++ b/lib/kernel/src/project.dart @@ -1,10 +1,10 @@ import 'dart:convert'; import 'dart:io'; -import 'package:clide_app/kernel/src/events/bus.dart'; -import 'package:clide_app/kernel/src/events/types.dart'; -import 'package:clide_app/kernel/src/log.dart'; -import 'package:clide_app/kernel/src/settings.dart'; +import 'package:clide/kernel/src/events/bus.dart'; +import 'package:clide/kernel/src/events/types.dart'; +import 'package:clide/kernel/src/log.dart'; +import 'package:clide/kernel/src/settings.dart'; import 'package:flutter/foundation.dart'; class RecentProject { diff --git a/app/lib/kernel/src/secrets.dart b/lib/kernel/src/secrets.dart similarity index 100% rename from app/lib/kernel/src/secrets.dart rename to lib/kernel/src/secrets.dart diff --git a/app/lib/kernel/src/settings.dart b/lib/kernel/src/settings.dart similarity index 100% rename from app/lib/kernel/src/settings.dart rename to lib/kernel/src/settings.dart diff --git a/app/lib/kernel/src/syntax/language_map.dart b/lib/kernel/src/syntax/language_map.dart similarity index 100% rename from app/lib/kernel/src/syntax/language_map.dart rename to lib/kernel/src/syntax/language_map.dart diff --git a/app/lib/kernel/src/syntax/tree_sitter_ffi.dart b/lib/kernel/src/syntax/tree_sitter_ffi.dart similarity index 100% rename from app/lib/kernel/src/syntax/tree_sitter_ffi.dart rename to lib/kernel/src/syntax/tree_sitter_ffi.dart diff --git a/app/lib/kernel/src/syntax/tree_sitter_service.dart b/lib/kernel/src/syntax/tree_sitter_service.dart similarity index 97% rename from app/lib/kernel/src/syntax/tree_sitter_service.dart rename to lib/kernel/src/syntax/tree_sitter_service.dart index a1403e86..bffb352a 100644 --- a/app/lib/kernel/src/syntax/tree_sitter_service.dart +++ b/lib/kernel/src/syntax/tree_sitter_service.dart @@ -4,9 +4,9 @@ import 'dart:convert' show utf8; import 'dart:ffi'; import 'dart:ui' show Color; -import 'package:clide_app/kernel/src/syntax/language_map.dart'; -import 'package:clide_app/kernel/src/syntax/tree_sitter_ffi.dart'; -import 'package:clide_app/kernel/src/theme/tokens.dart'; +import 'package:clide/kernel/src/syntax/language_map.dart'; +import 'package:clide/kernel/src/syntax/tree_sitter_ffi.dart'; +import 'package:clide/kernel/src/theme/tokens.dart'; import 'package:ffi/ffi.dart'; import 'package:flutter/services.dart' show rootBundle; diff --git a/app/lib/kernel/src/theme/contrast.dart b/lib/kernel/src/theme/contrast.dart similarity index 98% rename from app/lib/kernel/src/theme/contrast.dart rename to lib/kernel/src/theme/contrast.dart index 66a766cd..6d68a417 100644 --- a/app/lib/kernel/src/theme/contrast.dart +++ b/lib/kernel/src/theme/contrast.dart @@ -1,7 +1,7 @@ import 'dart:math' as math; import 'dart:ui'; -import 'package:clide_app/kernel/src/theme/tokens.dart'; +import 'package:clide/kernel/src/theme/tokens.dart'; import 'package:flutter/foundation.dart'; /// A foreground/background token pair the a11y contrast suite walks. diff --git a/app/lib/kernel/src/theme/controller.dart b/lib/kernel/src/theme/controller.dart similarity index 94% rename from app/lib/kernel/src/theme/controller.dart rename to lib/kernel/src/theme/controller.dart index de3bd279..a50ad01d 100644 --- a/app/lib/kernel/src/theme/controller.dart +++ b/lib/kernel/src/theme/controller.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/kernel/src/theme/loader.dart'; -import 'package:clide_app/kernel/src/theme/resolver.dart'; -import 'package:clide_app/kernel/src/theme/tokens.dart'; +import 'package:clide/kernel/src/theme/loader.dart'; +import 'package:clide/kernel/src/theme/resolver.dart'; +import 'package:clide/kernel/src/theme/tokens.dart'; import 'package:flutter/widgets.dart'; @immutable diff --git a/app/lib/kernel/src/theme/loader.dart b/lib/kernel/src/theme/loader.dart similarity index 96% rename from app/lib/kernel/src/theme/loader.dart rename to lib/kernel/src/theme/loader.dart index da301ded..519d5015 100644 --- a/app/lib/kernel/src/theme/loader.dart +++ b/lib/kernel/src/theme/loader.dart @@ -1,7 +1,7 @@ import 'dart:io'; -import 'package:clide_app/kernel/src/theme/palette.dart'; -import 'package:clide_app/kernel/src/theme/semantic.dart'; +import 'package:clide/kernel/src/theme/palette.dart'; +import 'package:clide/kernel/src/theme/semantic.dart'; import 'package:flutter/services.dart'; import 'package:yaml/yaml.dart'; diff --git a/app/lib/kernel/src/theme/palette.dart b/lib/kernel/src/theme/palette.dart similarity index 100% rename from app/lib/kernel/src/theme/palette.dart rename to lib/kernel/src/theme/palette.dart diff --git a/app/lib/kernel/src/theme/resolver.dart b/lib/kernel/src/theme/resolver.dart similarity index 98% rename from app/lib/kernel/src/theme/resolver.dart rename to lib/kernel/src/theme/resolver.dart index c4b8e270..f89bf13a 100644 --- a/app/lib/kernel/src/theme/resolver.dart +++ b/lib/kernel/src/theme/resolver.dart @@ -1,8 +1,8 @@ import 'dart:ui'; -import 'package:clide_app/kernel/src/theme/palette.dart'; -import 'package:clide_app/kernel/src/theme/semantic.dart'; -import 'package:clide_app/kernel/src/theme/tokens.dart'; +import 'package:clide/kernel/src/theme/palette.dart'; +import 'package:clide/kernel/src/theme/semantic.dart'; +import 'package:clide/kernel/src/theme/tokens.dart'; /// Three-tier theme resolution. /// diff --git a/app/lib/kernel/src/theme/semantic.dart b/lib/kernel/src/theme/semantic.dart similarity index 100% rename from app/lib/kernel/src/theme/semantic.dart rename to lib/kernel/src/theme/semantic.dart diff --git a/app/lib/kernel/src/theme/themes/clide.yaml b/lib/kernel/src/theme/themes/clide.yaml similarity index 100% rename from app/lib/kernel/src/theme/themes/clide.yaml rename to lib/kernel/src/theme/themes/clide.yaml diff --git a/app/lib/kernel/src/theme/themes/midnight.yaml b/lib/kernel/src/theme/themes/midnight.yaml similarity index 100% rename from app/lib/kernel/src/theme/themes/midnight.yaml rename to lib/kernel/src/theme/themes/midnight.yaml diff --git a/app/lib/kernel/src/theme/themes/paper.yaml b/lib/kernel/src/theme/themes/paper.yaml similarity index 100% rename from app/lib/kernel/src/theme/themes/paper.yaml rename to lib/kernel/src/theme/themes/paper.yaml diff --git a/app/lib/kernel/src/theme/themes/summer-night.yaml b/lib/kernel/src/theme/themes/summer-night.yaml similarity index 100% rename from app/lib/kernel/src/theme/themes/summer-night.yaml rename to lib/kernel/src/theme/themes/summer-night.yaml diff --git a/app/lib/kernel/src/theme/themes/terminal.yaml b/lib/kernel/src/theme/themes/terminal.yaml similarity index 100% rename from app/lib/kernel/src/theme/themes/terminal.yaml rename to lib/kernel/src/theme/themes/terminal.yaml diff --git a/app/lib/kernel/src/theme/tokens.dart b/lib/kernel/src/theme/tokens.dart similarity index 100% rename from app/lib/kernel/src/theme/tokens.dart rename to lib/kernel/src/theme/tokens.dart diff --git a/app/lib/kernel/src/tray.dart b/lib/kernel/src/tray.dart similarity index 92% rename from app/lib/kernel/src/tray.dart rename to lib/kernel/src/tray.dart index 3bc3981a..96961fb0 100644 --- a/app/lib/kernel/src/tray.dart +++ b/lib/kernel/src/tray.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/extension/src/contribution.dart'; +import 'package:clide/extension/src/contribution.dart'; import 'package:flutter/foundation.dart'; /// Tier-0 stub for OS tray / menu-bar integration. diff --git a/app/lib/lua/lua.dart b/lib/lua/lua.dart similarity index 100% rename from app/lib/lua/lua.dart rename to lib/lua/lua.dart diff --git a/app/lib/lua/src/adapter.dart b/lib/lua/src/adapter.dart similarity index 93% rename from app/lib/lua/src/adapter.dart rename to lib/lua/src/adapter.dart index b74586b7..5622f3ee 100644 --- a/app/lib/lua/src/adapter.dart +++ b/lib/lua/src/adapter.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/extension/extension.dart'; +import 'package:clide/extension/extension.dart'; /// Tier-0 stub. The real adapter wraps a parsed Lua extension manifest /// and a handle to the Lua state; contributions are proxied to diff --git a/app/lib/lua/src/capability_api.dart b/lib/lua/src/capability_api.dart similarity index 100% rename from app/lib/lua/src/capability_api.dart rename to lib/lua/src/capability_api.dart diff --git a/app/lib/lua/src/host.dart b/lib/lua/src/host.dart similarity index 100% rename from app/lib/lua/src/host.dart rename to lib/lua/src/host.dart diff --git a/app/lib/lua/src/render_intent.dart b/lib/lua/src/render_intent.dart similarity index 100% rename from app/lib/lua/src/render_intent.dart rename to lib/lua/src/render_intent.dart diff --git a/app/lib/main.dart b/lib/main.dart similarity index 71% rename from app/lib/main.dart rename to lib/main.dart index b5c58a07..4a44f8c8 100644 --- a/app/lib/main.dart +++ b/lib/main.dart @@ -1,31 +1,31 @@ -import 'package:clide_app/app.dart'; -import 'package:clide_app/builtin/canvas/canvas.dart'; -import 'package:clide_app/builtin/claude/claude.dart'; -import 'package:clide_app/builtin/claude_control/claude_control.dart'; -import 'package:clide_app/builtin/decisions/decisions.dart'; -import 'package:clide_app/builtin/default_layout/default_layout.dart'; -import 'package:clide_app/builtin/diff/diff.dart'; -import 'package:clide_app/builtin/editor/editor.dart'; -import 'package:clide_app/builtin/extensions_ui/extensions_ui.dart'; -import 'package:clide_app/builtin/files/files.dart'; -import 'package:clide_app/builtin/git/git.dart'; -import 'package:clide_app/builtin/grammars_core/grammars_core.dart'; -import 'package:clide_app/builtin/graph/graph.dart'; -import 'package:clide_app/builtin/ipc_status/ipc_status.dart'; -import 'package:clide_app/builtin/keybindings_ui/keybindings_ui.dart'; -import 'package:clide_app/builtin/markdown/markdown.dart'; -import 'package:clide_app/builtin/pql/pql.dart'; -import 'package:clide_app/builtin/problems/problems.dart'; -import 'package:clide_app/builtin/settings_ui/settings_ui.dart'; -import 'package:clide_app/builtin/terminal/terminal.dart'; -import 'package:clide_app/builtin/theme_picker/theme_picker.dart'; -import 'package:clide_app/builtin/tickets/tickets.dart'; -import 'package:clide_app/builtin/todos/todos.dart'; -import 'package:clide_app/builtin/welcome/welcome.dart'; +import 'package:clide/app.dart'; +import 'package:clide/builtin/canvas/canvas.dart'; +import 'package:clide/builtin/claude/claude.dart'; +import 'package:clide/builtin/claude_control/claude_control.dart'; +import 'package:clide/builtin/decisions/decisions.dart'; +import 'package:clide/builtin/default_layout/default_layout.dart'; +import 'package:clide/builtin/diff/diff.dart'; +import 'package:clide/builtin/editor/editor.dart'; +import 'package:clide/builtin/extensions_ui/extensions_ui.dart'; +import 'package:clide/builtin/files/files.dart'; +import 'package:clide/builtin/git/git.dart'; +import 'package:clide/builtin/grammars_core/grammars_core.dart'; +import 'package:clide/builtin/graph/graph.dart'; +import 'package:clide/builtin/ipc_status/ipc_status.dart'; +import 'package:clide/builtin/keybindings_ui/keybindings_ui.dart'; +import 'package:clide/builtin/markdown/markdown.dart'; +import 'package:clide/builtin/pql/pql.dart'; +import 'package:clide/builtin/problems/problems.dart'; +import 'package:clide/builtin/settings_ui/settings_ui.dart'; +import 'package:clide/builtin/terminal/terminal.dart'; +import 'package:clide/builtin/theme_picker/theme_picker.dart'; +import 'package:clide/builtin/tickets/tickets.dart'; +import 'package:clide/builtin/todos/todos.dart'; +import 'package:clide/builtin/welcome/welcome.dart'; import 'dart:io' show Directory, Platform; -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/kernel/src/syntax/tree_sitter_ffi.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/kernel/src/syntax/tree_sitter_ffi.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart' show rootBundle; import 'package:flutter/widgets.dart'; diff --git a/app/lib/widgets/src/clide_button.dart b/lib/widgets/src/clide_button.dart similarity index 96% rename from app/lib/widgets/src/clide_button.dart rename to lib/widgets/src/clide_button.dart index 206ffed4..0aee3ad9 100644 --- a/app/lib/widgets/src/clide_button.dart +++ b/lib/widgets/src/clide_button.dart @@ -1,5 +1,5 @@ -import 'package:clide_app/kernel/src/theme/controller.dart'; -import 'package:clide_app/widgets/src/clide_text.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; +import 'package:clide/widgets/src/clide_text.dart'; import 'package:flutter/widgets.dart'; enum ClideButtonVariant { normal, primary, subtle } diff --git a/app/lib/widgets/src/clide_divider.dart b/lib/widgets/src/clide_divider.dart similarity index 89% rename from app/lib/widgets/src/clide_divider.dart rename to lib/widgets/src/clide_divider.dart index 7221ea86..c2704075 100644 --- a/app/lib/widgets/src/clide_divider.dart +++ b/lib/widgets/src/clide_divider.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/kernel/src/theme/controller.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; import 'package:flutter/widgets.dart'; class ClideDivider extends StatelessWidget { diff --git a/app/lib/widgets/src/clide_icon.dart b/lib/widgets/src/clide_icon.dart similarity index 95% rename from app/lib/widgets/src/clide_icon.dart rename to lib/widgets/src/clide_icon.dart index 52443247..3ebeff7d 100644 --- a/app/lib/widgets/src/clide_icon.dart +++ b/lib/widgets/src/clide_icon.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/kernel/src/theme/controller.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; import 'package:flutter/widgets.dart'; /// Stateless painter producing a single-color icon. Every icon in diff --git a/app/lib/widgets/src/clide_icon_rail.dart b/lib/widgets/src/clide_icon_rail.dart similarity index 92% rename from app/lib/widgets/src/clide_icon_rail.dart rename to lib/widgets/src/clide_icon_rail.dart index 2140a9c6..ff3ff30e 100644 --- a/app/lib/widgets/src/clide_icon_rail.dart +++ b/lib/widgets/src/clide_icon_rail.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/kernel/src/theme/controller.dart'; -import 'package:clide_app/widgets/src/clide_icon.dart'; -import 'package:clide_app/widgets/src/clide_tooltip.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; +import 'package:clide/widgets/src/clide_icon.dart'; +import 'package:clide/widgets/src/clide_tooltip.dart'; import 'package:flutter/widgets.dart'; class ClideIconRailItem { @@ -36,7 +36,6 @@ class _ClideIconRailState extends State { @override Widget build(BuildContext context) { - final tokens = ClideTheme.of(context).surface; return MouseRegion( onExit: (_) => setState(() => _hoveredId = null), child: SizedBox( diff --git a/app/lib/widgets/src/clide_palette.dart b/lib/widgets/src/clide_palette.dart similarity index 96% rename from app/lib/widgets/src/clide_palette.dart rename to lib/widgets/src/clide_palette.dart index fe251f9a..3e45cc61 100644 --- a/app/lib/widgets/src/clide_palette.dart +++ b/lib/widgets/src/clide_palette.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/kernel/kernel.dart'; -import 'package:clide_app/widgets/src/clide_text.dart'; -import 'package:clide_app/widgets/src/typography.dart'; +import 'package:clide/kernel/kernel.dart'; +import 'package:clide/widgets/src/clide_text.dart'; +import 'package:clide/widgets/src/typography.dart'; import 'package:flutter/widgets.dart'; class ClidePalette extends StatefulWidget { diff --git a/app/lib/widgets/src/clide_pane_chrome.dart b/lib/widgets/src/clide_pane_chrome.dart similarity index 98% rename from app/lib/widgets/src/clide_pane_chrome.dart rename to lib/widgets/src/clide_pane_chrome.dart index 7894aa6d..af6c98c7 100644 --- a/app/lib/widgets/src/clide_pane_chrome.dart +++ b/lib/widgets/src/clide_pane_chrome.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/kernel/src/theme/controller.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; import 'package:flutter/widgets.dart'; import 'clide_divider.dart'; diff --git a/app/lib/widgets/src/clide_pty_view.dart b/lib/widgets/src/clide_pty_view.dart similarity index 95% rename from app/lib/widgets/src/clide_pty_view.dart rename to lib/widgets/src/clide_pty_view.dart index 2562580f..0fbc609f 100644 --- a/app/lib/widgets/src/clide_pty_view.dart +++ b/lib/widgets/src/clide_pty_view.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/kernel/src/theme/controller.dart'; -import 'package:clide_app/kernel/src/theme/tokens.dart'; -import 'package:clide_app/widgets/src/typography.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; +import 'package:clide/kernel/src/theme/tokens.dart'; +import 'package:clide/widgets/src/typography.dart'; import 'package:flutter/widgets.dart'; import 'package:xterm/xterm.dart'; diff --git a/app/lib/widgets/src/clide_scrollbar.dart b/lib/widgets/src/clide_scrollbar.dart similarity index 95% rename from app/lib/widgets/src/clide_scrollbar.dart rename to lib/widgets/src/clide_scrollbar.dart index 6627c258..0c83b940 100644 --- a/app/lib/widgets/src/clide_scrollbar.dart +++ b/lib/widgets/src/clide_scrollbar.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/kernel/src/theme/controller.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; import 'package:flutter/widgets.dart'; /// Thin themed scrollbar. Tier-0 shell; more refined scrolling (velocity diff --git a/app/lib/widgets/src/clide_spine.dart b/lib/widgets/src/clide_spine.dart similarity index 97% rename from app/lib/widgets/src/clide_spine.dart rename to lib/widgets/src/clide_spine.dart index b2a3383c..61a9879a 100644 --- a/app/lib/widgets/src/clide_spine.dart +++ b/lib/widgets/src/clide_spine.dart @@ -1,6 +1,6 @@ import 'dart:math' as math; -import 'package:clide_app/kernel/src/theme/controller.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; import 'package:flutter/widgets.dart'; class ClideSpine extends StatefulWidget { diff --git a/app/lib/widgets/src/clide_surface.dart b/lib/widgets/src/clide_surface.dart similarity index 94% rename from app/lib/widgets/src/clide_surface.dart rename to lib/widgets/src/clide_surface.dart index d780d774..b968a019 100644 --- a/app/lib/widgets/src/clide_surface.dart +++ b/lib/widgets/src/clide_surface.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/kernel/src/theme/controller.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; import 'package:flutter/widgets.dart'; /// Themed container. Replaces Material's Card / Scaffold body surfaces diff --git a/app/lib/widgets/src/clide_tab_bar.dart b/lib/widgets/src/clide_tab_bar.dart similarity index 94% rename from app/lib/widgets/src/clide_tab_bar.dart rename to lib/widgets/src/clide_tab_bar.dart index d28b2fbb..21ee8f81 100644 --- a/app/lib/widgets/src/clide_tab_bar.dart +++ b/lib/widgets/src/clide_tab_bar.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/kernel/src/theme/controller.dart'; -import 'package:clide_app/widgets/src/clide_icon.dart'; -import 'package:clide_app/widgets/src/clide_text.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; +import 'package:clide/widgets/src/clide_icon.dart'; +import 'package:clide/widgets/src/clide_text.dart'; import 'package:flutter/widgets.dart'; @immutable diff --git a/app/lib/widgets/src/clide_text.dart b/lib/widgets/src/clide_text.dart similarity index 92% rename from app/lib/widgets/src/clide_text.dart rename to lib/widgets/src/clide_text.dart index 7643babe..2d752e17 100644 --- a/app/lib/widgets/src/clide_text.dart +++ b/lib/widgets/src/clide_text.dart @@ -1,5 +1,5 @@ -import 'package:clide_app/kernel/src/theme/controller.dart'; -import 'package:clide_app/widgets/src/typography.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; +import 'package:clide/widgets/src/typography.dart'; import 'package:flutter/widgets.dart'; /// Theme-aware Text. Defaults pull from the global foreground token diff --git a/app/lib/widgets/src/clide_tooltip.dart b/lib/widgets/src/clide_tooltip.dart similarity index 94% rename from app/lib/widgets/src/clide_tooltip.dart rename to lib/widgets/src/clide_tooltip.dart index a807e89b..34aa4687 100644 --- a/app/lib/widgets/src/clide_tooltip.dart +++ b/lib/widgets/src/clide_tooltip.dart @@ -1,5 +1,5 @@ -import 'package:clide_app/kernel/src/theme/controller.dart'; -import 'package:clide_app/widgets/src/clide_text.dart'; +import 'package:clide/kernel/src/theme/controller.dart'; +import 'package:clide/widgets/src/clide_text.dart'; import 'package:flutter/widgets.dart'; /// Very small tooltip — hover a child to reveal a label. Uses an diff --git a/app/lib/widgets/src/icons/check.dart b/lib/widgets/src/icons/check.dart similarity index 89% rename from app/lib/widgets/src/icons/check.dart rename to lib/widgets/src/icons/check.dart index df12b39f..7ac37ea8 100644 --- a/app/lib/widgets/src/icons/check.dart +++ b/lib/widgets/src/icons/check.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/widgets/src/clide_icon.dart'; +import 'package:clide/widgets/src/clide_icon.dart'; import 'package:flutter/widgets.dart'; class CheckIcon extends ClideIconPainter { diff --git a/app/lib/widgets/src/icons/chevron.dart b/lib/widgets/src/icons/chevron.dart similarity index 94% rename from app/lib/widgets/src/icons/chevron.dart rename to lib/widgets/src/icons/chevron.dart index 315448b1..f05373b1 100644 --- a/app/lib/widgets/src/icons/chevron.dart +++ b/lib/widgets/src/icons/chevron.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/widgets/src/clide_icon.dart'; +import 'package:clide/widgets/src/clide_icon.dart'; import 'package:flutter/widgets.dart'; class ChevronRightIcon extends ClideIconPainter { diff --git a/app/lib/widgets/src/icons/dot.dart b/lib/widgets/src/icons/dot.dart similarity index 81% rename from app/lib/widgets/src/icons/dot.dart rename to lib/widgets/src/icons/dot.dart index f8c75c67..59f184bf 100644 --- a/app/lib/widgets/src/icons/dot.dart +++ b/lib/widgets/src/icons/dot.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/widgets/src/clide_icon.dart'; +import 'package:clide/widgets/src/clide_icon.dart'; import 'package:flutter/widgets.dart'; class DotIcon extends ClideIconPainter { diff --git a/app/lib/widgets/src/icons/folder.dart b/lib/widgets/src/icons/folder.dart similarity index 90% rename from app/lib/widgets/src/icons/folder.dart rename to lib/widgets/src/icons/folder.dart index 7c092246..b26a7ae9 100644 --- a/app/lib/widgets/src/icons/folder.dart +++ b/lib/widgets/src/icons/folder.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/widgets/src/clide_icon.dart'; +import 'package:clide/widgets/src/clide_icon.dart'; import 'package:flutter/widgets.dart'; class FolderIcon extends ClideIconPainter { diff --git a/app/lib/widgets/src/icons/gear.dart b/lib/widgets/src/icons/gear.dart similarity index 95% rename from app/lib/widgets/src/icons/gear.dart rename to lib/widgets/src/icons/gear.dart index a4aaa7fb..fa59e49f 100644 --- a/app/lib/widgets/src/icons/gear.dart +++ b/lib/widgets/src/icons/gear.dart @@ -1,6 +1,6 @@ import 'dart:math' as math; -import 'package:clide_app/widgets/src/clide_icon.dart'; +import 'package:clide/widgets/src/clide_icon.dart'; import 'package:flutter/widgets.dart'; class GearIcon extends ClideIconPainter { diff --git a/app/lib/widgets/src/icons/git_branch.dart b/lib/widgets/src/icons/git_branch.dart similarity index 93% rename from app/lib/widgets/src/icons/git_branch.dart rename to lib/widgets/src/icons/git_branch.dart index 65ea5a7e..303baa8b 100644 --- a/app/lib/widgets/src/icons/git_branch.dart +++ b/lib/widgets/src/icons/git_branch.dart @@ -1,5 +1,5 @@ import 'dart:ui'; -import 'package:clide_app/widgets/src/clide_icon.dart'; +import 'package:clide/widgets/src/clide_icon.dart'; class GitBranchIcon extends ClideIconPainter { const GitBranchIcon(); diff --git a/app/lib/widgets/src/icons/phosphor.dart b/lib/widgets/src/icons/phosphor.dart similarity index 96% rename from app/lib/widgets/src/icons/phosphor.dart rename to lib/widgets/src/icons/phosphor.dart index 21a55829..6b7de41e 100644 --- a/app/lib/widgets/src/icons/phosphor.dart +++ b/lib/widgets/src/icons/phosphor.dart @@ -1,6 +1,6 @@ import 'dart:ui' as ui; -import 'package:clide_app/widgets/src/clide_icon.dart'; +import 'package:clide/widgets/src/clide_icon.dart'; class PhosphorIconPainter extends ClideIconPainter { const PhosphorIconPainter(this.codePoint, {this.family = 'Phosphor'}); @@ -68,5 +68,6 @@ abstract class PhosphorIcons { static const lightbulb = PhosphorIconPainter(0xe2dc); static const notepad = PhosphorIconPainter(0xe63e); static const bookOpen = PhosphorIconPainter(0xe0e6); + static const xMark = PhosphorIconPainter(0xe4f6); static const circlesFour = PhosphorIconPainter(0xe190); } diff --git a/app/lib/widgets/src/icons/plug.dart b/lib/widgets/src/icons/plug.dart similarity index 94% rename from app/lib/widgets/src/icons/plug.dart rename to lib/widgets/src/icons/plug.dart index 7f302830..872c8f0c 100644 --- a/app/lib/widgets/src/icons/plug.dart +++ b/lib/widgets/src/icons/plug.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/widgets/src/clide_icon.dart'; +import 'package:clide/widgets/src/clide_icon.dart'; import 'package:flutter/widgets.dart'; /// Plug-shaped connection icon. Used by the ipc-status statusbar item diff --git a/app/lib/widgets/src/icons/search.dart b/lib/widgets/src/icons/search.dart similarity index 88% rename from app/lib/widgets/src/icons/search.dart rename to lib/widgets/src/icons/search.dart index 31aaef91..fab9013d 100644 --- a/app/lib/widgets/src/icons/search.dart +++ b/lib/widgets/src/icons/search.dart @@ -1,5 +1,5 @@ import 'dart:ui'; -import 'package:clide_app/widgets/src/clide_icon.dart'; +import 'package:clide/widgets/src/clide_icon.dart'; class SearchIcon extends ClideIconPainter { const SearchIcon(); diff --git a/app/lib/widgets/src/icons/terminal_icon.dart b/lib/widgets/src/icons/terminal_icon.dart similarity index 91% rename from app/lib/widgets/src/icons/terminal_icon.dart rename to lib/widgets/src/icons/terminal_icon.dart index 7353b6d5..596511d7 100644 --- a/app/lib/widgets/src/icons/terminal_icon.dart +++ b/lib/widgets/src/icons/terminal_icon.dart @@ -1,5 +1,5 @@ import 'dart:ui'; -import 'package:clide_app/widgets/src/clide_icon.dart'; +import 'package:clide/widgets/src/clide_icon.dart'; class TerminalIcon extends ClideIconPainter { const TerminalIcon(); diff --git a/app/lib/widgets/src/icons/warning.dart b/lib/widgets/src/icons/warning.dart similarity index 92% rename from app/lib/widgets/src/icons/warning.dart rename to lib/widgets/src/icons/warning.dart index babcdc07..aa50206b 100644 --- a/app/lib/widgets/src/icons/warning.dart +++ b/lib/widgets/src/icons/warning.dart @@ -1,5 +1,5 @@ import 'dart:ui'; -import 'package:clide_app/widgets/src/clide_icon.dart'; +import 'package:clide/widgets/src/clide_icon.dart'; class WarningIcon extends ClideIconPainter { const WarningIcon(); diff --git a/app/lib/widgets/src/icons/x.dart b/lib/widgets/src/icons/x.dart similarity index 88% rename from app/lib/widgets/src/icons/x.dart rename to lib/widgets/src/icons/x.dart index aaf66b9b..f40db1d1 100644 --- a/app/lib/widgets/src/icons/x.dart +++ b/lib/widgets/src/icons/x.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/widgets/src/clide_icon.dart'; +import 'package:clide/widgets/src/clide_icon.dart'; import 'package:flutter/widgets.dart'; class CloseIcon extends ClideIconPainter { diff --git a/app/lib/widgets/src/typography.dart b/lib/widgets/src/typography.dart similarity index 100% rename from app/lib/widgets/src/typography.dart rename to lib/widgets/src/typography.dart diff --git a/app/lib/widgets/widgets.dart b/lib/widgets/widgets.dart similarity index 100% rename from app/lib/widgets/widgets.dart rename to lib/widgets/widgets.dart diff --git a/app/linux/.gitignore b/linux/.gitignore similarity index 100% rename from app/linux/.gitignore rename to linux/.gitignore diff --git a/app/linux/CMakeLists.txt b/linux/CMakeLists.txt similarity index 100% rename from app/linux/CMakeLists.txt rename to linux/CMakeLists.txt diff --git a/app/linux/flutter/CMakeLists.txt b/linux/flutter/CMakeLists.txt similarity index 100% rename from app/linux/flutter/CMakeLists.txt rename to linux/flutter/CMakeLists.txt diff --git a/app/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc similarity index 100% rename from app/linux/flutter/generated_plugin_registrant.cc rename to linux/flutter/generated_plugin_registrant.cc diff --git a/app/linux/flutter/generated_plugin_registrant.h b/linux/flutter/generated_plugin_registrant.h similarity index 100% rename from app/linux/flutter/generated_plugin_registrant.h rename to linux/flutter/generated_plugin_registrant.h diff --git a/app/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake similarity index 100% rename from app/linux/flutter/generated_plugins.cmake rename to linux/flutter/generated_plugins.cmake diff --git a/app/linux/runner/CMakeLists.txt b/linux/runner/CMakeLists.txt similarity index 100% rename from app/linux/runner/CMakeLists.txt rename to linux/runner/CMakeLists.txt diff --git a/app/linux/runner/main.cc b/linux/runner/main.cc similarity index 100% rename from app/linux/runner/main.cc rename to linux/runner/main.cc diff --git a/app/linux/runner/my_application.cc b/linux/runner/my_application.cc similarity index 100% rename from app/linux/runner/my_application.cc rename to linux/runner/my_application.cc diff --git a/app/linux/runner/my_application.h b/linux/runner/my_application.h similarity index 100% rename from app/linux/runner/my_application.h rename to linux/runner/my_application.h diff --git a/app/macos/.gitignore b/macos/.gitignore similarity index 100% rename from app/macos/.gitignore rename to macos/.gitignore diff --git a/app/macos/Flutter/Flutter-Debug.xcconfig b/macos/Flutter/Flutter-Debug.xcconfig similarity index 100% rename from app/macos/Flutter/Flutter-Debug.xcconfig rename to macos/Flutter/Flutter-Debug.xcconfig diff --git a/app/macos/Flutter/Flutter-Release.xcconfig b/macos/Flutter/Flutter-Release.xcconfig similarity index 100% rename from app/macos/Flutter/Flutter-Release.xcconfig rename to macos/Flutter/Flutter-Release.xcconfig diff --git a/app/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift similarity index 100% rename from app/macos/Flutter/GeneratedPluginRegistrant.swift rename to macos/Flutter/GeneratedPluginRegistrant.swift diff --git a/app/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj similarity index 100% rename from app/macos/Runner.xcodeproj/project.pbxproj rename to macos/Runner.xcodeproj/project.pbxproj diff --git a/app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 100% rename from app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme rename to macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme diff --git a/app/macos/Runner.xcworkspace/contents.xcworkspacedata b/macos/Runner.xcworkspace/contents.xcworkspacedata similarity index 100% rename from app/macos/Runner.xcworkspace/contents.xcworkspacedata rename to macos/Runner.xcworkspace/contents.xcworkspacedata diff --git a/app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/app/macos/Runner/AppDelegate.swift b/macos/Runner/AppDelegate.swift similarity index 100% rename from app/macos/Runner/AppDelegate.swift rename to macos/Runner/AppDelegate.swift diff --git a/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png similarity index 100% rename from app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png rename to macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png diff --git a/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png similarity index 100% rename from app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png rename to macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png diff --git a/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png similarity index 100% rename from app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png rename to macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png diff --git a/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png similarity index 100% rename from app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png rename to macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png diff --git a/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png similarity index 100% rename from app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png rename to macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png diff --git a/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png similarity index 100% rename from app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png rename to macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png diff --git a/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png similarity index 100% rename from app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png rename to macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png diff --git a/app/macos/Runner/Base.lproj/MainMenu.xib b/macos/Runner/Base.lproj/MainMenu.xib similarity index 100% rename from app/macos/Runner/Base.lproj/MainMenu.xib rename to macos/Runner/Base.lproj/MainMenu.xib diff --git a/app/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig similarity index 100% rename from app/macos/Runner/Configs/AppInfo.xcconfig rename to macos/Runner/Configs/AppInfo.xcconfig diff --git a/app/macos/Runner/Configs/Debug.xcconfig b/macos/Runner/Configs/Debug.xcconfig similarity index 100% rename from app/macos/Runner/Configs/Debug.xcconfig rename to macos/Runner/Configs/Debug.xcconfig diff --git a/app/macos/Runner/Configs/Release.xcconfig b/macos/Runner/Configs/Release.xcconfig similarity index 100% rename from app/macos/Runner/Configs/Release.xcconfig rename to macos/Runner/Configs/Release.xcconfig diff --git a/app/macos/Runner/Configs/Warnings.xcconfig b/macos/Runner/Configs/Warnings.xcconfig similarity index 100% rename from app/macos/Runner/Configs/Warnings.xcconfig rename to macos/Runner/Configs/Warnings.xcconfig diff --git a/app/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements similarity index 100% rename from app/macos/Runner/DebugProfile.entitlements rename to macos/Runner/DebugProfile.entitlements diff --git a/app/macos/Runner/Info.plist b/macos/Runner/Info.plist similarity index 100% rename from app/macos/Runner/Info.plist rename to macos/Runner/Info.plist diff --git a/app/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift similarity index 100% rename from app/macos/Runner/MainFlutterWindow.swift rename to macos/Runner/MainFlutterWindow.swift diff --git a/app/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements similarity index 100% rename from app/macos/Runner/Release.entitlements rename to macos/Runner/Release.entitlements diff --git a/app/macos/RunnerTests/RunnerTests.swift b/macos/RunnerTests/RunnerTests.swift similarity index 100% rename from app/macos/RunnerTests/RunnerTests.swift rename to macos/RunnerTests/RunnerTests.swift diff --git a/app/native/linux-x64/BUILD.md b/native/linux-x64/BUILD.md similarity index 100% rename from app/native/linux-x64/BUILD.md rename to native/linux-x64/BUILD.md diff --git a/app/native/linux-x64/WASMTIME-LICENSE b/native/linux-x64/WASMTIME-LICENSE similarity index 100% rename from app/native/linux-x64/WASMTIME-LICENSE rename to native/linux-x64/WASMTIME-LICENSE diff --git a/app/native/linux-x64/libtree-sitter.so b/native/linux-x64/libtree-sitter.so similarity index 100% rename from app/native/linux-x64/libtree-sitter.so rename to native/linux-x64/libtree-sitter.so diff --git a/pubspec.lock b/pubspec.lock index b2caedc4..66799e1b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,26 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" + sha256: "8d7ff3948166b8ec5da0fbb5962000926b8e02f2ed9b3e51d1738905fbd4c98d" url: "https://pub.dev" source: hosted - version: "67.0.0" + version: "93.0.0" + alchemist: + dependency: "direct dev" + description: + name: alchemist + sha256: "4c5f5146b7539eb9a53211d81489f09f08fc3821f754a370f493477a9ef9e390" + url: "https://pub.dev" + source: hosted + version: "0.12.1" analyzer: dependency: transitive description: name: analyzer - sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" + sha256: de7148ed2fcec579b19f122c1800933dfa028f6d9fd38a152b04b1516cec120b url: "https://pub.dev" source: hosted - version: "6.4.1" + version: "10.0.1" args: dependency: transitive description: @@ -41,6 +49,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" + characters: + dependency: transitive + description: + name: characters + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b + url: "https://pub.dev" + source: hosted + version: "1.4.1" cli_config: dependency: transitive description: @@ -49,6 +65,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.0" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" collection: dependency: transitive description: @@ -81,6 +105,22 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.7" + equatable: + dependency: transitive + description: + name: equatable + sha256: "3e0141505477fd8ad55d6eb4e7776d3fe8430be8e497ccb1521370c3f21a3e2b" + url: "https://pub.dev" + source: hosted + version: "2.0.8" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + url: "https://pub.dev" + source: hosted + version: "1.3.3" ffi: dependency: "direct main" description: @@ -97,6 +137,29 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_driver: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1" + url: "https://pub.dev" + source: hosted + version: "6.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" frontend_server_client: dependency: transitive description: @@ -105,6 +168,11 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.0" + fuchsia_remote_debug_protocol: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" glob: dependency: transitive description: @@ -129,6 +197,11 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.2" + integration_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" io: dependency: transitive description: @@ -137,22 +210,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" - js: + leak_tracker: dependency: transitive description: - name: js - sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" + name: leak_tracker + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "11.0.2" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" + url: "https://pub.dev" + source: hosted + version: "3.0.10" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" lints: - dependency: "direct dev" + dependency: transitive description: name: lints - sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413" + sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df" url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "6.1.0" logging: dependency: transitive description: @@ -165,18 +254,26 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.19" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" + url: "https://pub.dev" + source: hosted + version: "0.13.0" meta: dependency: transitive description: name: meta - sha256: df0c643f44ad098eb37988027a8e2b2b5a031fd3977f06bbfd3a76637e8df739 + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" url: "https://pub.dev" source: hosted - version: "1.18.2" + version: "1.17.0" mime: dependency: transitive description: @@ -217,6 +314,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" + platform: + dependency: transitive + description: + name: platform + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" + url: "https://pub.dev" + source: hosted + version: "3.1.6" pool: dependency: transitive description: @@ -225,6 +330,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.2" + process: + dependency: transitive + description: + name: process + sha256: c6248e4526673988586e8c00bb22a49210c258dc91df5227d5da9748ecf79744 + url: "https://pub.dev" + source: hosted + version: "5.0.5" pub_semver: dependency: transitive description: @@ -233,6 +346,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.0" + quiver: + dependency: transitive + description: + name: quiver + sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2 + url: "https://pub.dev" + source: hosted + version: "3.2.2" shelf: dependency: transitive description: @@ -261,10 +382,15 @@ packages: dependency: transitive description: name: shelf_web_socket - sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67 + sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.0" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" source_map_stack_trace: dependency: transitive description: @@ -313,6 +439,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.1" + sync_http: + dependency: transitive + description: + name: sync_http + sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" + url: "https://pub.dev" + source: hosted + version: "0.3.1" term_glyph: dependency: transitive description: @@ -325,26 +459,26 @@ packages: dependency: "direct dev" description: name: test - sha256: "713a8789d62f3233c46b4a90b174737b2c04cb6ae4500f2aa8b1be8f03f5e67f" + sha256: "280d6d890011ca966ad08df7e8a4ddfab0fb3aa49f96ed6de56e3521347a9ae7" url: "https://pub.dev" source: hosted - version: "1.25.8" + version: "1.30.0" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a" url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.10" test_core: dependency: transitive description: name: test_core - sha256: "12391302411737c176b0b5d6491f466b0dd56d4763e347b6714efbaa74d7953d" + sha256: "0381bd1585d1a924763c308100f2138205252fb90c9d4eeaf28489ee65ccde51" url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "0.6.16" typed_data: dependency: transitive description: @@ -353,14 +487,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b + url: "https://pub.dev" + source: hosted + version: "2.2.0" vm_service: dependency: transitive description: name: vm_service - sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" + sha256: "046d3928e16fa4dc46e8350415661755ab759d9fc97fc21b5ab295f71e4f0499" url: "https://pub.dev" source: hosted - version: "14.3.1" + version: "15.1.0" watcher: dependency: transitive description: @@ -393,6 +535,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" + webdriver: + dependency: transitive + description: + name: webdriver + sha256: "2f3a14ca026957870cfd9c635b83507e0e51d8091568e90129fbf805aba7cade" + url: "https://pub.dev" + source: hosted + version: "3.1.0" webkit_inspection_protocol: dependency: transitive description: @@ -401,13 +551,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.1" + xterm: + dependency: "direct main" + description: + name: xterm + sha256: "168dfedca77cba33fdb6f52e2cd001e9fde216e398e89335c19b524bb22da3a2" + url: "https://pub.dev" + source: hosted + version: "4.0.0" yaml: - dependency: transitive + dependency: "direct main" description: name: yaml sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce url: "https://pub.dev" source: hosted version: "3.1.3" + zmodem: + dependency: transitive + description: + name: zmodem + sha256: "3b7e5b29f3a7d8aee472029b05165a68438eff2f3f7766edf13daba1e297adbf" + url: "https://pub.dev" + source: hosted + version: "0.0.6" sdks: - dart: ">=3.7.0-0 <4.0.0" + dart: ">=3.9.0 <4.0.0" + flutter: ">=3.32.0" diff --git a/pubspec.yaml b/pubspec.yaml index 6d0c654f..e07a33f9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,44 +1,90 @@ -# clide — Dart core package. +# clide — Flutter desktop IDE for Claude Code. # -# This is the repo-root package: the `clide` CLI (one-shot subcommand -# mode) and the `clide --daemon` long-running process both compile from -# `bin/clide.dart` against `lib/`. It has NO Flutter dependency so -# `dart compile exe` produces a lean static binary. +# Single package: UI, core subsystems (IPC, PTY, git, pql), and +# extensions all live here. The Flutter app hosts the IPC server +# in-process (D-056); tmux owns session persistence (D-041). # -# The Flutter desktop UI lives under `app/` as a separate package that -# depends on this one via a path: dependency. See D-005 for the -# layout rationale. -# -# Version is mirrored from project.yaml on every bump. project.yaml is -# the single source of truth — if you change one without the other, -# `make build`'s ldflag stamping will reveal the drift. +# Prefer-zero-deps; every third-party entry is exact-pinned and +# justified. No carets. See D-031. name: clide description: >- - Flutter desktop IDE for Claude Code — Dart core (CLI + daemon + shared - library). The Flutter UI lives under app/. -version: 2.0.0-dev + Flutter desktop IDE for Claude Code. One Dart package covering the + UI, subsystem handlers (pane, files, editor, git, pql), and the + extension framework. publish_to: none +version: 2.0.0-dev repository: https://git.schweitz.net/jpmschweitzer/clide environment: sdk: ">=3.5.0 <4.0.0" + flutter: ">=3.19.0" -# Prefer-zero-deps. Anything added here must be justified against the -# "write it yourself" default (see memory: -# feedback_dart_deps_minimal_locked_cve_checked.md). Exact-pin; never -# carets. dependencies: - # Dart-team-maintained allocator (`calloc`) + type helpers on top of - # dart:ffi. Saves ~50 LOC of malloc/free boilerplate for the PTY - # wrapper's libc bindings (socketpair, recvmsg with SCM_RIGHTS, - # ioctl). Tiny, zero transitive deps. Listed in - # app/assets/licenses.yaml per D-042. + flutter: + sdk: flutter + + yaml: 3.1.3 + + xterm: 4.0.0 + ffi: 2.1.3 dev_dependencies: - lints: 5.0.0 - test: 1.25.8 - # Mocks at IO boundaries (daemon subprocess, socket). Null-safe, - # no codegen. Hand-rolled fakes for ChangeNotifier-style services. + flutter_test: + sdk: flutter + flutter_lints: 6.0.0 + + integration_test: + sdk: flutter + + test: 1.30.0 mocktail: 1.0.4 + alchemist: 0.12.1 + +flutter: + uses-material-design: false + + assets: + - lib/kernel/src/theme/themes/ + - lib/kernel/src/i18n/catalog/ + - assets/licenses.yaml + - assets/LICENSE + - assets/fonts/jetbrains_mono/OFL.txt + - assets/fonts/josefin_sans/OFL.txt + - assets/fonts/phosphor/LICENSE + - assets/logo/clide-logo.svg + - assets/logo/clide-logo-16.png + - assets/logo/clide-logo-32.png + - assets/logo/clide-logo-48.png + - assets/logo/clide-logo-192.png + - assets/logo/clide-logo-256.png + - assets/logo/clide-logo-512.png + - assets/logo/clide-logo-1024.png + - assets/grammars/ + - assets/queries/ + + fonts: + - family: JosefinSans + fonts: + - asset: assets/fonts/josefin_sans/JosefinSans-VariableFont.ttf + - asset: assets/fonts/josefin_sans/JosefinSans-Italic-VariableFont.ttf + style: italic + + - family: Phosphor + fonts: + - asset: assets/fonts/phosphor/Phosphor.ttf + - asset: assets/fonts/phosphor/Phosphor-Bold.ttf + weight: 700 + - asset: assets/fonts/phosphor/Phosphor-Fill.ttf + + - family: JetBrainsMono + fonts: + - asset: assets/fonts/jetbrains_mono/JetBrainsMono-Regular.ttf + - asset: assets/fonts/jetbrains_mono/JetBrainsMono-Italic.ttf + style: italic + - asset: assets/fonts/jetbrains_mono/JetBrainsMono-Bold.ttf + weight: 700 + - asset: assets/fonts/jetbrains_mono/JetBrainsMono-BoldItalic.ttf + weight: 700 + style: italic diff --git a/app/test/a11y/contrast_test.dart b/test/a11y/contrast_test.dart similarity index 96% rename from app/test/a11y/contrast_test.dart rename to test/a11y/contrast_test.dart index 1410c0d3..8db719e2 100644 --- a/app/test/a11y/contrast_test.dart +++ b/test/a11y/contrast_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/services.dart' show rootBundle; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/a11y/i18n_coverage_test.dart b/test/a11y/i18n_coverage_test.dart similarity index 97% rename from app/test/a11y/i18n_coverage_test.dart rename to test/a11y/i18n_coverage_test.dart index 90ed88fc..e6c56cf0 100644 --- a/app/test/a11y/i18n_coverage_test.dart +++ b/test/a11y/i18n_coverage_test.dart @@ -1,6 +1,6 @@ import 'dart:ui'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/services.dart' show rootBundle; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/a11y/keyboard_traversal_test.dart b/test/a11y/keyboard_traversal_test.dart similarity index 96% rename from app/test/a11y/keyboard_traversal_test.dart rename to test/a11y/keyboard_traversal_test.dart index 60ec6a3f..8f1f5f5f 100644 --- a/app/test/a11y/keyboard_traversal_test.dart +++ b/test/a11y/keyboard_traversal_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/semantics.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/a11y/semantic_coverage_test.dart b/test/a11y/semantic_coverage_test.dart similarity index 87% rename from app/test/a11y/semantic_coverage_test.dart rename to test/a11y/semantic_coverage_test.dart index 8ac44a57..62104a4a 100644 --- a/app/test/a11y/semantic_coverage_test.dart +++ b/test/a11y/semantic_coverage_test.dart @@ -1,8 +1,8 @@ -import 'package:clide_app/builtin/default_layout/default_layout.dart'; -import 'package:clide_app/builtin/ipc_status/ipc_status.dart'; -import 'package:clide_app/builtin/theme_picker/theme_picker.dart'; -import 'package:clide_app/builtin/welcome/welcome.dart'; -import 'package:clide_app/extension/extension.dart'; +import 'package:clide/builtin/default_layout/default_layout.dart'; +import 'package:clide/builtin/ipc_status/ipc_status.dart'; +import 'package:clide/builtin/theme_picker/theme_picker.dart'; +import 'package:clide/builtin/welcome/welcome.dart'; +import 'package:clide/extension/extension.dart'; import 'package:flutter_test/flutter_test.dart'; /// Cross-extension contract check: every built-in extension declares a diff --git a/app/test/builtin/claude/session_naming_test.dart b/test/builtin/claude/session_naming_test.dart similarity index 92% rename from app/test/builtin/claude/session_naming_test.dart rename to test/builtin/claude/session_naming_test.dart index 85f7580e..90d97f73 100644 --- a/app/test/builtin/claude/session_naming_test.dart +++ b/test/builtin/claude/session_naming_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/builtin/claude/src/session_naming.dart'; +import 'package:clide/builtin/claude/src/session_naming.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/app/test/builtin/default_layout/widget_test.dart b/test/builtin/default_layout/widget_test.dart similarity index 91% rename from app/test/builtin/default_layout/widget_test.dart rename to test/builtin/default_layout/widget_test.dart index 31a70597..ce7e40a5 100644 --- a/app/test/builtin/default_layout/widget_test.dart +++ b/test/builtin/default_layout/widget_test.dart @@ -1,6 +1,6 @@ -import 'package:clide_app/builtin/default_layout/default_layout.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/default_layout/default_layout.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter_test/flutter_test.dart'; import '../../helpers/kernel_fixture.dart'; diff --git a/app/test/builtin/ipc_status/widget_test.dart b/test/builtin/ipc_status/widget_test.dart similarity index 91% rename from app/test/builtin/ipc_status/widget_test.dart rename to test/builtin/ipc_status/widget_test.dart index 571d1350..949ab331 100644 --- a/app/test/builtin/ipc_status/widget_test.dart +++ b/test/builtin/ipc_status/widget_test.dart @@ -1,8 +1,8 @@ import 'dart:ui'; -import 'package:clide_app/builtin/ipc_status/ipc_status.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/ipc_status/ipc_status.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/builtin/theme_picker/widget_test.dart b/test/builtin/theme_picker/widget_test.dart similarity index 96% rename from app/test/builtin/theme_picker/widget_test.dart rename to test/builtin/theme_picker/widget_test.dart index 950d1284..01891543 100644 --- a/app/test/builtin/theme_picker/widget_test.dart +++ b/test/builtin/theme_picker/widget_test.dart @@ -1,7 +1,7 @@ import 'dart:ui'; -import 'package:clide_app/builtin/theme_picker/theme_picker.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/theme_picker/theme_picker.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/builtin/welcome/widget_test.dart b/test/builtin/welcome/widget_test.dart similarity index 87% rename from app/test/builtin/welcome/widget_test.dart rename to test/builtin/welcome/widget_test.dart index a802bebf..c973f424 100644 --- a/app/test/builtin/welcome/widget_test.dart +++ b/test/builtin/welcome/widget_test.dart @@ -1,9 +1,9 @@ import 'dart:ui'; -import 'package:clide_app/builtin/welcome/welcome.dart'; -import 'package:clide_app/builtin/welcome/src/welcome_view.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/builtin/welcome/welcome.dart'; +import 'package:clide/builtin/welcome/src/welcome_view.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/extension/src/contribution_test.dart b/test/extension/src/contribution_test.dart similarity index 94% rename from app/test/extension/src/contribution_test.dart rename to test/extension/src/contribution_test.dart index 75916daf..380314a8 100644 --- a/app/test/extension/src/contribution_test.dart +++ b/test/extension/src/contribution_test.dart @@ -1,6 +1,6 @@ import 'package:clide/clide.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/extension/src/host_test.dart b/test/extension/src/host_test.dart similarity index 97% rename from app/test/extension/src/host_test.dart rename to test/extension/src/host_test.dart index 57c1c0c0..7d2bd246 100644 --- a/app/test/extension/src/host_test.dart +++ b/test/extension/src/host_test.dart @@ -1,6 +1,6 @@ import 'dart:io'; -import 'package:clide_app/extension/extension.dart'; +import 'package:clide/extension/extension.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/app/test/extension/src/manifest_test.dart b/test/extension/src/manifest_test.dart similarity index 97% rename from app/test/extension/src/manifest_test.dart rename to test/extension/src/manifest_test.dart index 32d0b740..75558fd9 100644 --- a/app/test/extension/src/manifest_test.dart +++ b/test/extension/src/manifest_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/extension/extension.dart'; +import 'package:clide/extension/extension.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/app/test/goldens/clide_button_goldens_test.dart b/test/goldens/clide_button_goldens_test.dart similarity index 97% rename from app/test/goldens/clide_button_goldens_test.dart rename to test/goldens/clide_button_goldens_test.dart index 8d495230..8eecb790 100644 --- a/app/test/goldens/clide_button_goldens_test.dart +++ b/test/goldens/clide_button_goldens_test.dart @@ -1,5 +1,5 @@ import 'package:alchemist/alchemist.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/goldens/clide_icon_goldens_test.dart b/test/goldens/clide_icon_goldens_test.dart similarity index 95% rename from app/test/goldens/clide_icon_goldens_test.dart rename to test/goldens/clide_icon_goldens_test.dart index 2b9dc6e2..62b0160d 100644 --- a/app/test/goldens/clide_icon_goldens_test.dart +++ b/test/goldens/clide_icon_goldens_test.dart @@ -1,5 +1,5 @@ import 'package:alchemist/alchemist.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/goldens/clide_tab_bar_goldens_test.dart b/test/goldens/clide_tab_bar_goldens_test.dart similarity index 97% rename from app/test/goldens/clide_tab_bar_goldens_test.dart rename to test/goldens/clide_tab_bar_goldens_test.dart index efd0c25d..4cd82fa8 100644 --- a/app/test/goldens/clide_tab_bar_goldens_test.dart +++ b/test/goldens/clide_tab_bar_goldens_test.dart @@ -1,5 +1,5 @@ import 'package:alchemist/alchemist.dart'; -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/goldens/goldens/ci/clide_button.png b/test/goldens/goldens/ci/clide_button.png similarity index 100% rename from app/test/goldens/goldens/ci/clide_button.png rename to test/goldens/goldens/ci/clide_button.png diff --git a/app/test/goldens/goldens/ci/clide_icon.png b/test/goldens/goldens/ci/clide_icon.png similarity index 100% rename from app/test/goldens/goldens/ci/clide_icon.png rename to test/goldens/goldens/ci/clide_icon.png diff --git a/app/test/goldens/goldens/ci/clide_tab_bar.png b/test/goldens/goldens/ci/clide_tab_bar.png similarity index 100% rename from app/test/goldens/goldens/ci/clide_tab_bar.png rename to test/goldens/goldens/ci/clide_tab_bar.png diff --git a/app/test/goldens/goldens/linux/clide_button.png b/test/goldens/goldens/linux/clide_button.png similarity index 100% rename from app/test/goldens/goldens/linux/clide_button.png rename to test/goldens/goldens/linux/clide_button.png diff --git a/app/test/goldens/goldens/linux/clide_icon.png b/test/goldens/goldens/linux/clide_icon.png similarity index 100% rename from app/test/goldens/goldens/linux/clide_icon.png rename to test/goldens/goldens/linux/clide_icon.png diff --git a/app/test/goldens/goldens/linux/clide_tab_bar.png b/test/goldens/goldens/linux/clide_tab_bar.png similarity index 100% rename from app/test/goldens/goldens/linux/clide_tab_bar.png rename to test/goldens/goldens/linux/clide_tab_bar.png diff --git a/app/test/helpers/fake_ipc.dart b/test/helpers/fake_ipc.dart similarity index 96% rename from app/test/helpers/fake_ipc.dart rename to test/helpers/fake_ipc.dart index c30d30c9..06614378 100644 --- a/app/test/helpers/fake_ipc.dart +++ b/test/helpers/fake_ipc.dart @@ -1,5 +1,5 @@ import 'package:clide/clide.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; /// A DaemonClient that doesn't actually open a socket. Use in tests /// that need a connected-state observable but not a real daemon. diff --git a/app/test/helpers/golden_harness.dart b/test/helpers/golden_harness.dart similarity index 100% rename from app/test/helpers/golden_harness.dart rename to test/helpers/golden_harness.dart diff --git a/app/test/helpers/kernel_fixture.dart b/test/helpers/kernel_fixture.dart similarity index 98% rename from app/test/helpers/kernel_fixture.dart rename to test/helpers/kernel_fixture.dart index a30ef0ac..35d823d6 100644 --- a/app/test/helpers/kernel_fixture.dart +++ b/test/helpers/kernel_fixture.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'dart:ui'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'fake_ipc.dart'; diff --git a/app/test/helpers/widget_harness.dart b/test/helpers/widget_harness.dart similarity index 92% rename from app/test/helpers/widget_harness.dart rename to test/helpers/widget_harness.dart index 3d148668..326cb2b4 100644 --- a/app/test/helpers/widget_harness.dart +++ b/test/helpers/widget_harness.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/widgets.dart'; import 'kernel_fixture.dart'; diff --git a/app/test/kernel/src/commands/keybindings_test.dart b/test/kernel/src/commands/keybindings_test.dart similarity index 96% rename from app/test/kernel/src/commands/keybindings_test.dart rename to test/kernel/src/commands/keybindings_test.dart index 3a4333c9..56d72eac 100644 --- a/app/test/kernel/src/commands/keybindings_test.dart +++ b/test/kernel/src/commands/keybindings_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/app/test/kernel/src/commands/palette_test.dart b/test/kernel/src/commands/palette_test.dart similarity index 94% rename from app/test/kernel/src/commands/palette_test.dart rename to test/kernel/src/commands/palette_test.dart index 0d5c979a..793196e1 100644 --- a/app/test/kernel/src/commands/palette_test.dart +++ b/test/kernel/src/commands/palette_test.dart @@ -1,6 +1,6 @@ import 'package:clide/clide.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter_test/flutter_test.dart'; CommandContribution _cmd(String id, {String? title}) => CommandContribution( diff --git a/app/test/kernel/src/commands/registry_test.dart b/test/kernel/src/commands/registry_test.dart similarity index 93% rename from app/test/kernel/src/commands/registry_test.dart rename to test/kernel/src/commands/registry_test.dart index d5f7a526..090c75b6 100644 --- a/app/test/kernel/src/commands/registry_test.dart +++ b/test/kernel/src/commands/registry_test.dart @@ -1,6 +1,6 @@ import 'package:clide/clide.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter_test/flutter_test.dart'; CommandContribution _cmd(String name, Future Function() run) => diff --git a/app/test/kernel/src/events/bus_test.dart b/test/kernel/src/events/bus_test.dart similarity index 98% rename from app/test/kernel/src/events/bus_test.dart rename to test/kernel/src/events/bus_test.dart index 0bf08f4a..1655b60f 100644 --- a/app/test/kernel/src/events/bus_test.dart +++ b/test/kernel/src/events/bus_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/app/test/kernel/src/extensions_manager_test.dart b/test/kernel/src/extensions_manager_test.dart similarity index 98% rename from app/test/kernel/src/extensions_manager_test.dart rename to test/kernel/src/extensions_manager_test.dart index 22197697..f1d1537c 100644 --- a/app/test/kernel/src/extensions_manager_test.dart +++ b/test/kernel/src/extensions_manager_test.dart @@ -1,6 +1,6 @@ import 'package:clide/clide.dart'; -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/kernel/src/facade_test.dart b/test/kernel/src/facade_test.dart similarity index 100% rename from app/test/kernel/src/facade_test.dart rename to test/kernel/src/facade_test.dart diff --git a/app/test/kernel/src/i18n/i18n_test.dart b/test/kernel/src/i18n/i18n_test.dart similarity index 99% rename from app/test/kernel/src/i18n/i18n_test.dart rename to test/kernel/src/i18n/i18n_test.dart index 29ab20ca..c30d5932 100644 --- a/app/test/kernel/src/i18n/i18n_test.dart +++ b/test/kernel/src/i18n/i18n_test.dart @@ -1,6 +1,6 @@ import 'dart:ui'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter_test/flutter_test.dart'; /// Fills fframe's test gap — every path through the lookup matrix is diff --git a/app/test/kernel/src/log_test.dart b/test/kernel/src/log_test.dart similarity index 97% rename from app/test/kernel/src/log_test.dart rename to test/kernel/src/log_test.dart index cd37c788..30d0d36e 100644 --- a/app/test/kernel/src/log_test.dart +++ b/test/kernel/src/log_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/app/test/kernel/src/panels/arrangement_test.dart b/test/kernel/src/panels/arrangement_test.dart similarity index 99% rename from app/test/kernel/src/panels/arrangement_test.dart rename to test/kernel/src/panels/arrangement_test.dart index f5d4362d..32a45409 100644 --- a/app/test/kernel/src/panels/arrangement_test.dart +++ b/test/kernel/src/panels/arrangement_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/app/test/kernel/src/panels/registry_test.dart b/test/kernel/src/panels/registry_test.dart similarity index 96% rename from app/test/kernel/src/panels/registry_test.dart rename to test/kernel/src/panels/registry_test.dart index cc1ba506..443a6274 100644 --- a/app/test/kernel/src/panels/registry_test.dart +++ b/test/kernel/src/panels/registry_test.dart @@ -1,5 +1,5 @@ -import 'package:clide_app/extension/extension.dart'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/extension/extension.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/kernel/src/settings_test.dart b/test/kernel/src/settings_test.dart similarity index 98% rename from app/test/kernel/src/settings_test.dart rename to test/kernel/src/settings_test.dart index ab6dae98..f758ca27 100644 --- a/app/test/kernel/src/settings_test.dart +++ b/test/kernel/src/settings_test.dart @@ -1,6 +1,6 @@ import 'dart:io'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/app/test/kernel/src/theme/controller_test.dart b/test/kernel/src/theme/controller_test.dart similarity index 98% rename from app/test/kernel/src/theme/controller_test.dart rename to test/kernel/src/theme/controller_test.dart index 55527e14..a92ed596 100644 --- a/app/test/kernel/src/theme/controller_test.dart +++ b/test/kernel/src/theme/controller_test.dart @@ -1,6 +1,6 @@ import 'dart:ui'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter_test/flutter_test.dart'; ThemeDefinition _def(String name, Color primary) => ThemeDefinition( diff --git a/app/test/kernel/src/theme/loader_test.dart b/test/kernel/src/theme/loader_test.dart similarity index 97% rename from app/test/kernel/src/theme/loader_test.dart rename to test/kernel/src/theme/loader_test.dart index bce178ae..61c7ca31 100644 --- a/app/test/kernel/src/theme/loader_test.dart +++ b/test/kernel/src/theme/loader_test.dart @@ -1,6 +1,6 @@ import 'dart:ui'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/app/test/kernel/src/theme/resolver_test.dart b/test/kernel/src/theme/resolver_test.dart similarity index 99% rename from app/test/kernel/src/theme/resolver_test.dart rename to test/kernel/src/theme/resolver_test.dart index d2a63940..61acb897 100644 --- a/app/test/kernel/src/theme/resolver_test.dart +++ b/test/kernel/src/theme/resolver_test.dart @@ -1,6 +1,6 @@ import 'dart:ui'; -import 'package:clide_app/kernel/kernel.dart'; +import 'package:clide/kernel/kernel.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/app/test/widgets/clide_pane_chrome_test.dart b/test/widgets/clide_pane_chrome_test.dart similarity index 97% rename from app/test/widgets/clide_pane_chrome_test.dart rename to test/widgets/clide_pane_chrome_test.dart index dd0b2c03..56d73482 100644 --- a/app/test/widgets/clide_pane_chrome_test.dart +++ b/test/widgets/clide_pane_chrome_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/widgets/src/clide_button_test.dart b/test/widgets/src/clide_button_test.dart similarity index 98% rename from app/test/widgets/src/clide_button_test.dart rename to test/widgets/src/clide_button_test.dart index 146981c9..fcb35fcb 100644 --- a/app/test/widgets/src/clide_button_test.dart +++ b/test/widgets/src/clide_button_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/semantics.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/widgets/src/clide_divider_test.dart b/test/widgets/src/clide_divider_test.dart similarity index 95% rename from app/test/widgets/src/clide_divider_test.dart rename to test/widgets/src/clide_divider_test.dart index 19f673e4..b4f66228 100644 --- a/app/test/widgets/src/clide_divider_test.dart +++ b/test/widgets/src/clide_divider_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/widgets/src/clide_icon_test.dart b/test/widgets/src/clide_icon_test.dart similarity index 95% rename from app/test/widgets/src/clide_icon_test.dart rename to test/widgets/src/clide_icon_test.dart index 59c4f567..f7b6898f 100644 --- a/app/test/widgets/src/clide_icon_test.dart +++ b/test/widgets/src/clide_icon_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/widgets/src/clide_surface_test.dart b/test/widgets/src/clide_surface_test.dart similarity index 97% rename from app/test/widgets/src/clide_surface_test.dart rename to test/widgets/src/clide_surface_test.dart index b25bcfcb..15e1cdcb 100644 --- a/app/test/widgets/src/clide_surface_test.dart +++ b/test/widgets/src/clide_surface_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/test/widgets/src/clide_tab_bar_test.dart b/test/widgets/src/clide_tab_bar_test.dart similarity index 97% rename from app/test/widgets/src/clide_tab_bar_test.dart rename to test/widgets/src/clide_tab_bar_test.dart index ee2aa2a3..97fc7772 100644 --- a/app/test/widgets/src/clide_tab_bar_test.dart +++ b/test/widgets/src/clide_tab_bar_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; import '../../helpers/kernel_fixture.dart'; diff --git a/app/test/widgets/src/clide_text_test.dart b/test/widgets/src/clide_text_test.dart similarity index 96% rename from app/test/widgets/src/clide_text_test.dart rename to test/widgets/src/clide_text_test.dart index 56aae5af..c9aa609a 100644 --- a/app/test/widgets/src/clide_text_test.dart +++ b/test/widgets/src/clide_text_test.dart @@ -1,4 +1,4 @@ -import 'package:clide_app/widgets/widgets.dart'; +import 'package:clide/widgets/widgets.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/app/web/favicon.png b/web/favicon.png similarity index 100% rename from app/web/favicon.png rename to web/favicon.png diff --git a/app/web/icons/Icon-192.png b/web/icons/Icon-192.png similarity index 100% rename from app/web/icons/Icon-192.png rename to web/icons/Icon-192.png diff --git a/app/web/icons/Icon-512.png b/web/icons/Icon-512.png similarity index 100% rename from app/web/icons/Icon-512.png rename to web/icons/Icon-512.png diff --git a/app/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png similarity index 100% rename from app/web/icons/Icon-maskable-192.png rename to web/icons/Icon-maskable-192.png diff --git a/app/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png similarity index 100% rename from app/web/icons/Icon-maskable-512.png rename to web/icons/Icon-maskable-512.png diff --git a/app/web/index.html b/web/index.html similarity index 100% rename from app/web/index.html rename to web/index.html diff --git a/app/web/manifest.json b/web/manifest.json similarity index 100% rename from app/web/manifest.json rename to web/manifest.json