@webship.co/workspace 1.0.0-beta1 → 1.0.0-beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +339 -0
- package/README.md +28 -364
- package/core/bin/workspace.js +135 -0
- package/core/config/settings.labels.yml +514 -0
- package/core/config/settings.template.yml +292 -0
- package/core/config/style.yml +53 -0
- package/core/config/theme.default.yml +161 -0
- package/core/config/theme.dispatch.yml +166 -0
- package/core/config/theme.drupal.yml +175 -0
- package/core/config/theme.ember.yml +160 -0
- package/core/config/theme.github.yml +172 -0
- package/core/config/theme.gitlab.yml +168 -0
- package/core/config/theme.press.yml +161 -0
- package/core/config/theme.slate.yml +160 -0
- package/core/config/theme.upsun.yml +174 -0
- package/core/docs/architecture.svg +65 -0
- package/core/docs/getting-started.md +51 -0
- package/core/docs/plugins.md +27 -0
- package/core/docs/releases.md +23 -0
- package/core/docs/testing.md +15 -0
- package/core/docs/workspaces.md +25 -0
- package/core/scripts/args/arg-ai-items.sh +65 -0
- package/core/scripts/args/arg-autostart.sh +31 -0
- package/core/scripts/args/arg-avatar-agent.sh +28 -0
- package/core/scripts/args/arg-avatar-catalog.sh +12 -0
- package/core/scripts/args/arg-avatar-character.sh +68 -0
- package/core/scripts/args/arg-avatar-voice.sh +24 -0
- package/core/scripts/args/arg-avatar.sh +22 -0
- package/core/scripts/args/arg-checks.sh +36 -0
- package/core/scripts/args/arg-clone.sh +42 -0
- package/core/scripts/args/arg-commands.sh +51 -0
- package/core/scripts/args/arg-cucumber.sh +34 -0
- package/core/scripts/args/arg-distribution.sh +30 -0
- package/core/scripts/args/arg-drupal.sh +39 -0
- package/core/scripts/args/arg-drupal_cms.sh +18 -0
- package/core/scripts/args/arg-gitlab-ci-local.sh +25 -0
- package/core/scripts/args/arg-graphify.sh +36 -0
- package/core/scripts/args/arg-graphs.sh +12 -0
- package/core/scripts/args/arg-hostnames.sh +23 -0
- package/core/scripts/args/arg-milvus-backup.sh +8 -0
- package/core/scripts/args/arg-milvus-mcp.sh +12 -0
- package/core/scripts/args/arg-milvus.sh +32 -0
- package/core/scripts/args/arg-obsidian.sh +17 -0
- package/core/scripts/args/arg-odoo.sh +18 -0
- package/core/scripts/args/arg-penpot-backup.sh +8 -0
- package/core/scripts/args/arg-penpot-mcp.sh +15 -0
- package/core/scripts/args/arg-penpot-token.sh +17 -0
- package/core/scripts/args/arg-penpot.sh +44 -0
- package/core/scripts/args/arg-rag.sh +21 -0
- package/core/scripts/args/arg-ragify.sh +35 -0
- package/core/scripts/args/arg-reclaim.sh +18 -0
- package/core/scripts/args/arg-release.sh +21 -0
- package/core/scripts/args/arg-screen.sh +28 -0
- package/core/scripts/args/arg-site-template.sh +13 -0
- package/core/scripts/args/arg-spdd.sh +16 -0
- package/core/scripts/args/arg-specs.sh +22 -0
- package/core/scripts/args/arg-storage.sh +36 -0
- package/core/scripts/args/arg-testing.sh +36 -0
- package/core/scripts/args/arg-webship.sh +34 -0
- package/core/scripts/args/arg-webships-project.sh +22 -0
- package/core/scripts/args/arg-webships-site-template.sh +17 -0
- package/core/scripts/args/arg-webships.sh +34 -0
- package/core/scripts/args/arg-website-site-template.sh +17 -0
- package/core/scripts/args/arg-website.sh +25 -0
- package/core/scripts/args/arg-wordpress.sh +18 -0
- package/core/scripts/autostart-run.sh +162 -0
- package/core/scripts/autostart-stop.sh +30 -0
- package/core/scripts/autostart-watch.sh +43 -0
- package/core/scripts/autostart.sh +26 -0
- package/core/scripts/bootstrap-functions.sh +117 -0
- package/core/scripts/bootstrap-libraries.sh +10 -0
- package/core/scripts/bootstrap.sh +71 -0
- package/core/scripts/ddev-shim/ddev +122 -0
- package/core/scripts/docker-gid.sh +119 -0
- package/core/scripts/functions/arg-site-template.sh +28 -0
- package/core/scripts/functions/fun-ai-items-lock.sh +175 -0
- package/core/scripts/functions/fun-ai-items-sources.sh +298 -0
- package/core/scripts/functions/fun-ai-items.sh +621 -0
- package/core/scripts/functions/fun-ai-providers.sh +72 -0
- package/core/scripts/functions/fun-autostart.sh +429 -0
- package/core/scripts/functions/fun-avatar.sh +441 -0
- package/core/scripts/functions/fun-backup-item.sh +50 -0
- package/core/scripts/functions/fun-build-distribution.sh +226 -0
- package/core/scripts/functions/fun-build-site-template.sh +104 -0
- package/core/scripts/functions/fun-build-webships.sh +161 -0
- package/core/scripts/functions/fun-build-website.sh +199 -0
- package/core/scripts/functions/fun-checks.sh +243 -0
- package/core/scripts/functions/fun-clone-project.sh +289 -0
- package/core/scripts/functions/fun-commands.sh +521 -0
- package/core/scripts/functions/fun-database.sh +63 -0
- package/core/scripts/functions/fun-ddev-hostnames.sh +213 -0
- package/core/scripts/functions/fun-ddev-nodejs.sh +15 -0
- package/core/scripts/functions/fun-ddev-telemetry.sh +15 -0
- package/core/scripts/functions/fun-default-settings.sh +28 -0
- package/core/scripts/functions/fun-distribution-cucumber.sh +45 -0
- package/core/scripts/functions/fun-distribution-drupal.sh +25 -0
- package/core/scripts/functions/fun-distribution-drupal_cms.sh +35 -0
- package/core/scripts/functions/fun-distribution-webship.sh +28 -0
- package/core/scripts/functions/fun-distribution-webships.sh +33 -0
- package/core/scripts/functions/fun-distribution-website.sh +19 -0
- package/core/scripts/functions/fun-drush.sh +48 -0
- package/core/scripts/functions/fun-elevenlabs.sh +179 -0
- package/core/scripts/functions/fun-files.sh +19 -0
- package/core/scripts/functions/fun-git-worktrees.sh +142 -0
- package/core/scripts/functions/fun-gitlab-ci.sh +156 -0
- package/core/scripts/functions/fun-hostnames-cli.sh +88 -0
- package/core/scripts/functions/fun-milvus.sh +584 -0
- package/core/scripts/functions/fun-odoo.sh +121 -0
- package/core/scripts/functions/fun-penpot.sh +724 -0
- package/core/scripts/functions/fun-project-name.sh +20 -0
- package/core/scripts/functions/fun-rag.sh +253 -0
- package/core/scripts/functions/fun-ragify.sh +165 -0
- package/core/scripts/functions/fun-reclaim.sh +297 -0
- package/core/scripts/functions/fun-release.sh +159 -0
- package/core/scripts/functions/fun-remove-project.sh +319 -0
- package/core/scripts/functions/fun-screen.sh +96 -0
- package/core/scripts/functions/fun-spdd.sh +676 -0
- package/core/scripts/functions/fun-specs-share.sh +237 -0
- package/core/scripts/functions/fun-storage.sh +347 -0
- package/core/scripts/functions/fun-testing.sh +329 -0
- package/core/scripts/functions/fun-users.sh +87 -0
- package/core/scripts/functions/fun-version.sh +72 -0
- package/core/scripts/functions/fun-video-edit.sh +48 -0
- package/core/scripts/functions/fun-voice.sh +45 -0
- package/core/scripts/functions/fun-wordpress.sh +59 -0
- package/core/scripts/host-mounts.sh +161 -0
- package/core/scripts/install.sh +602 -0
- package/core/scripts/libs/__pycache__/video_edit.cpython-312.pyc +0 -0
- package/core/scripts/libs/argparse.sh +93 -0
- package/core/scripts/libs/bash-yaml.sh +52 -0
- package/core/scripts/libs/checks_plan.js +312 -0
- package/core/scripts/libs/elevenlabs.py +627 -0
- package/core/scripts/libs/progress-bar.sh +19 -0
- package/core/scripts/libs/rag_index.py +446 -0
- package/core/scripts/libs/video_edit.py +636 -0
- package/core/scripts/libs/voice.py +430 -0
- package/core/scripts/plugins/jira/host-install.sh +119 -0
- package/core/scripts/plugins/jira/host-mounts.txt +2 -0
- package/core/scripts/plugins/upsun/args/arg-upsun.sh +51 -0
- package/core/scripts/plugins/upsun/functions/fun-upsun.sh +304 -0
- package/core/scripts/plugins/upsun/host-install.sh +99 -0
- package/core/scripts/plugins/upsun/host-mounts.txt +1 -0
- package/core/scripts/plugins/upsun/upsun-ai.sh +133 -0
- package/core/scripts/plugins.sh +152 -0
- package/core/scripts/release.sh +69 -0
- package/core/scripts/storage.sh +39 -0
- package/core/scripts/sync-tooling.sh +246 -0
- package/core/scripts/tests/cmd-smoke-test.sh +109 -0
- package/core/scripts/trust-https.sh +257 -0
- package/core/workspace-app/.ddev/commands/web/test-dashboard +49 -0
- package/core/workspace-app/.ddev/config.yaml +400 -0
- package/core/workspace-app/.ddev/docker-compose.dood.yaml +45 -0
- package/core/workspace-app/.ddev/docker-compose.plugin-jira-twg.yaml +26 -0
- package/core/workspace-app/.ddev/docker-compose.plugin-upsun-upsun-cli.yaml +8 -0
- package/core/workspace-app/.ddev/docker-compose.screens.yaml +15 -0
- package/core/workspace-app/.ddev/nginx_full/nginx-site.conf +114 -0
- package/core/workspace-app/.ddev/web-build/Dockerfile.workspace-app +203 -0
- package/core/workspace-app/.ddev/web-build/ddev-shim-ddev +122 -0
- package/core/workspace-app/README.md +380 -0
- package/{actions → core/workspace-app/actions}/ddev.js +0 -1
- package/{actions → core/workspace-app/actions}/rag.js +0 -1
- package/{actions → core/workspace-app/actions}/testing.js +0 -1
- package/{assistant.js → core/workspace-app/assistant.js} +1 -10
- package/{git-info.js → core/workspace-app/git-info.js} +17 -1
- package/core/workspace-app/package.json +29 -0
- package/core/workspace-app/plugin-catalog.js +50 -0
- package/{plugins-page.js → core/workspace-app/plugins-page.js} +28 -2
- package/{server.js → core/workspace-app/server.js} +18 -0
- package/core/workspace-app/tests/features/actions-rail.feature +44 -0
- package/core/workspace-app/tests/features/ai-items.feature +23 -0
- package/core/workspace-app/tests/features/assistant-speech.feature +63 -0
- package/core/workspace-app/tests/features/checks.feature +39 -0
- package/core/workspace-app/tests/features/clone-project.feature +30 -0
- package/core/workspace-app/tests/features/command-authoring.feature +58 -0
- package/core/workspace-app/tests/features/dashboard.feature +57 -0
- package/core/workspace-app/tests/features/menus.feature +29 -0
- package/core/workspace-app/tests/features/plugins/jira/jira.feature +47 -0
- package/core/workspace-app/tests/features/plugins.feature +20 -0
- package/core/workspace-app/tests/features/project-actions.feature +40 -0
- package/core/workspace-app/tests/features/screens.feature +29 -0
- package/core/workspace-app/tests/features/settings.feature +46 -0
- package/core/workspace-app/tests/features/test-reports.feature +32 -0
- package/core/workspace-app/tests/features/theme.feature +40 -0
- package/core/workspace-app/tests/step-definitions/actions-post.steps.js +25 -0
- package/core/workspace-app/tests/step-definitions/assistant-speech.steps.js +152 -0
- package/core/workspace-app/tests/step-definitions/preconditions.steps.js +100 -0
- package/core/workspace-app/tests/unit/_isolated-config.js +31 -0
- package/core/workspace-app/tests/unit/accessibility.test.js +124 -0
- package/core/workspace-app/tests/unit/actions-rail-ux.test.js +56 -0
- package/core/workspace-app/tests/unit/actions-rail.test.js +51 -0
- package/core/workspace-app/tests/unit/ai-inventory.test.js +64 -0
- package/core/workspace-app/tests/unit/app-docs.test.js +64 -0
- package/core/workspace-app/tests/unit/assistant-avatar.test.js +110 -0
- package/core/workspace-app/tests/unit/assistant-cast.test.js +105 -0
- package/core/workspace-app/tests/unit/assistant-send-animation.test.js +15 -0
- package/core/workspace-app/tests/unit/assistant-suggestions.test.js +112 -0
- package/core/workspace-app/tests/unit/assistant-switches.test.js +53 -0
- package/core/workspace-app/tests/unit/assistant-views.test.js +146 -0
- package/core/workspace-app/tests/unit/assistant-working-indicator.test.js +49 -0
- package/core/workspace-app/tests/unit/assistant.test.js +61 -0
- package/core/workspace-app/tests/unit/audio-player.test.js +147 -0
- package/core/workspace-app/tests/unit/audio-voice.test.js +634 -0
- package/core/workspace-app/tests/unit/auth-google.test.js +180 -0
- package/core/workspace-app/tests/unit/autostart-watch.test.js +76 -0
- package/core/workspace-app/tests/unit/browsers.test.js +76 -0
- package/core/workspace-app/tests/unit/build-distribution.test.js +125 -0
- package/core/workspace-app/tests/unit/build-order.test.js +153 -0
- package/core/workspace-app/tests/unit/builder-args.test.js +113 -0
- package/core/workspace-app/tests/unit/builders.test.js +158 -0
- package/core/workspace-app/tests/unit/card-state-toggle.test.js +29 -0
- package/core/workspace-app/tests/unit/changelog.test.js +177 -0
- package/core/workspace-app/tests/unit/chat-thread.test.js +92 -0
- package/core/workspace-app/tests/unit/checks-plan.test.js +205 -0
- package/core/workspace-app/tests/unit/claude-args.test.js +182 -0
- package/core/workspace-app/tests/unit/claude-code-here.test.js +15 -0
- package/core/workspace-app/tests/unit/claude-resume.test.js +147 -0
- package/core/workspace-app/tests/unit/claude-screen-options.test.js +84 -0
- package/core/workspace-app/tests/unit/claude-session.test.js +41 -0
- package/core/workspace-app/tests/unit/command-flags.test.js +45 -0
- package/core/workspace-app/tests/unit/command-palette.test.js +105 -0
- package/core/workspace-app/tests/unit/commands-center.test.js +338 -0
- package/core/workspace-app/tests/unit/composer-menu.test.js +187 -0
- package/core/workspace-app/tests/unit/config-yaml.test.js +116 -0
- package/core/workspace-app/tests/unit/confirm-dialog.test.js +69 -0
- package/core/workspace-app/tests/unit/create-card.test.js +85 -0
- package/core/workspace-app/tests/unit/ddev-addons.test.js +144 -0
- package/core/workspace-app/tests/unit/ddev-auth-ssh.test.js +40 -0
- package/core/workspace-app/tests/unit/ddev-custom-commands.test.js +56 -0
- package/core/workspace-app/tests/unit/ddev-diagnose.test.js +57 -0
- package/core/workspace-app/tests/unit/ddev-domains.test.js +153 -0
- package/core/workspace-app/tests/unit/ddev-hostnames.test.js +143 -0
- package/core/workspace-app/tests/unit/ddev-import.test.js +82 -0
- package/core/workspace-app/tests/unit/ddev-mail.test.js +135 -0
- package/core/workspace-app/tests/unit/ddev-menu-and-create.test.js +28 -0
- package/core/workspace-app/tests/unit/ddev-mutagen.test.js +37 -0
- package/core/workspace-app/tests/unit/ddev-options.test.js +51 -0
- package/core/workspace-app/tests/unit/ddev-share.test.js +40 -0
- package/core/workspace-app/tests/unit/ddev-shim.test.js +57 -0
- package/core/workspace-app/tests/unit/ddev-snapshots.test.js +142 -0
- package/core/workspace-app/tests/unit/ddev-start-daemons.test.js +62 -0
- package/core/workspace-app/tests/unit/ddev-xdebug.test.js +41 -0
- package/core/workspace-app/tests/unit/deep-chat-origin.test.js +38 -0
- package/core/workspace-app/tests/unit/density.test.js +52 -0
- package/core/workspace-app/tests/unit/elevenlabs.test.js +453 -0
- package/core/workspace-app/tests/unit/event-log.test.js +102 -0
- package/core/workspace-app/tests/unit/favicon.test.js +68 -0
- package/core/workspace-app/tests/unit/files-browser.test.js +224 -0
- package/core/workspace-app/tests/unit/git-info.test.js +26 -0
- package/core/workspace-app/tests/unit/grid-and-list.test.js +103 -0
- package/core/workspace-app/tests/unit/host-tool-wrapper.test.js +18 -0
- package/core/workspace-app/tests/unit/html-patterns.test.js +51 -0
- package/core/workspace-app/tests/unit/ide-infra.test.js +28 -0
- package/core/workspace-app/tests/unit/images-ai.test.js +201 -0
- package/core/workspace-app/tests/unit/images-create.test.js +59 -0
- package/core/workspace-app/tests/unit/images-providers.test.js +248 -0
- package/core/workspace-app/tests/unit/images-svg.test.js +213 -0
- package/core/workspace-app/tests/unit/images-workspace.test.js +144 -0
- package/core/workspace-app/tests/unit/jobs-fragment.test.js +66 -0
- package/core/workspace-app/tests/unit/media-ux.test.js +164 -0
- package/core/workspace-app/tests/unit/modal-fit.test.js +87 -0
- package/core/workspace-app/tests/unit/modules-load.test.js +23 -0
- package/core/workspace-app/tests/unit/narration.test.js +186 -0
- package/core/workspace-app/tests/unit/navigation-editor.test.js +260 -0
- package/core/workspace-app/tests/unit/navigation.test.js +254 -0
- package/core/workspace-app/tests/unit/new-folder.test.js +121 -0
- package/core/workspace-app/tests/unit/new-screen-form.test.js +149 -0
- package/core/workspace-app/tests/unit/node-menu.test.js +161 -0
- package/core/workspace-app/tests/unit/notes.test.js +128 -0
- package/core/workspace-app/tests/unit/page-structure.test.js +40 -0
- package/core/workspace-app/tests/unit/page-width.test.js +59 -0
- package/core/workspace-app/tests/unit/php-version.test.js +90 -0
- package/core/workspace-app/tests/unit/plan-card.test.js +44 -0
- package/core/workspace-app/tests/unit/plugin-catalog.test.js +31 -0
- package/core/workspace-app/tests/unit/plugin-system.test.js +251 -0
- package/core/workspace-app/tests/unit/plugins-page.test.js +28 -0
- package/core/workspace-app/tests/unit/plugins.test.js +58 -0
- package/core/workspace-app/tests/unit/project-activity-filter.test.js +180 -0
- package/core/workspace-app/tests/unit/project-make.test.js +143 -0
- package/core/workspace-app/tests/unit/project-name.test.js +202 -0
- package/core/workspace-app/tests/unit/reader.test.js +62 -0
- package/core/workspace-app/tests/unit/release.test.js +92 -0
- package/core/workspace-app/tests/unit/remove-confirm.test.js +37 -0
- package/core/workspace-app/tests/unit/report-pdf.test.js +171 -0
- package/core/workspace-app/tests/unit/round-11.test.js +31 -0
- package/core/workspace-app/tests/unit/round-12.test.js +37 -0
- package/core/workspace-app/tests/unit/row-layout.test.js +585 -0
- package/core/workspace-app/tests/unit/row-menus-fold.test.js +29 -0
- package/core/workspace-app/tests/unit/rows-add-modal.test.js +68 -0
- package/core/workspace-app/tests/unit/screen-runner-queue.test.js +41 -0
- package/core/workspace-app/tests/unit/screen-window.test.js +116 -0
- package/core/workspace-app/tests/unit/screens-beside-running.test.js +19 -0
- package/core/workspace-app/tests/unit/screens-columns.test.js +79 -0
- package/core/workspace-app/tests/unit/screens-menu.test.js +84 -0
- package/core/workspace-app/tests/unit/screens-modal-overlay.test.js +14 -0
- package/core/workspace-app/tests/unit/screens-waiting.test.js +129 -0
- package/core/workspace-app/tests/unit/screens.test.js +74 -0
- package/core/workspace-app/tests/unit/second-storage.test.js +218 -0
- package/core/workspace-app/tests/unit/session-name.test.js +64 -0
- package/core/workspace-app/tests/unit/settings-file.test.js +173 -0
- package/core/workspace-app/tests/unit/settings-nested-list.test.js +54 -0
- package/core/workspace-app/tests/unit/settings-raw.test.js +177 -0
- package/core/workspace-app/tests/unit/shared-prefs.test.js +49 -0
- package/core/workspace-app/tests/unit/speech.test.js +290 -0
- package/core/workspace-app/tests/unit/static-caching.test.js +39 -0
- package/core/workspace-app/tests/unit/status-language.test.js +47 -0
- package/core/workspace-app/tests/unit/tab-modal.test.js +69 -0
- package/core/workspace-app/tests/unit/tab-title.test.js +37 -0
- package/core/workspace-app/tests/unit/template-literals.test.js +52 -0
- package/core/workspace-app/tests/unit/terminal-scrollback.test.js +61 -0
- package/core/workspace-app/tests/unit/terminal-size.test.js +103 -0
- package/core/workspace-app/tests/unit/terminal-style.test.js +84 -0
- package/core/workspace-app/tests/unit/terminal-windows.test.js +154 -0
- package/core/workspace-app/tests/unit/themes.test.js +453 -0
- package/core/workspace-app/tests/unit/tool-labels.test.js +34 -0
- package/core/workspace-app/tests/unit/topbar-icons.test.js +47 -0
- package/core/workspace-app/tests/unit/update-docker-gid.test.js +51 -0
- package/core/workspace-app/tests/unit/user-guide.test.js +60 -0
- package/core/workspace-app/tests/unit/version-check.test.js +98 -0
- package/core/workspace-app/tests/unit/version-link.test.js +50 -0
- package/core/workspace-app/tests/unit/video-borrow.test.js +198 -0
- package/core/workspace-app/tests/unit/video-edit-ask.test.js +93 -0
- package/core/workspace-app/tests/unit/video-edit-short.test.js +42 -0
- package/core/workspace-app/tests/unit/video-edit.test.js +417 -0
- package/core/workspace-app/tests/unit/video-transcript.test.js +237 -0
- package/core/workspace-app/tests/unit/waiting.test.js +48 -0
- package/core/workspace-app/tests/unit/wordpress-odoo-builders.test.js +38 -0
- package/core/workspace-app/tests/unit/workspace-bin.test.js +48 -0
- package/core/workspace-app/tests/unit/workspace-card-tools.test.js +30 -0
- package/core/workspace-app/tests/unit/workspace-delete.test.js +77 -0
- package/core/workspace-app/tests/unit/workspace-types.test.js +68 -0
- package/core/workspace-app/tests/unit/worktree-clone.test.js +250 -0
- package/package.json +38 -36
- /package/{PLUGINS.md → core/workspace-app/PLUGINS.md} +0 -0
- /package/{WORKSPACES.md → core/workspace-app/WORKSPACES.md} +0 -0
- /package/{actions → core/workspace-app/actions}/ai-items.js +0 -0
- /package/{actions → core/workspace-app/actions}/audio.js +0 -0
- /package/{actions → core/workspace-app/actions}/build-order.js +0 -0
- /package/{actions → core/workspace-app/actions}/checks.js +0 -0
- /package/{actions → core/workspace-app/actions}/claude-session.js +0 -0
- /package/{actions → core/workspace-app/actions}/commands-center.js +0 -0
- /package/{actions → core/workspace-app/actions}/composer.js +0 -0
- /package/{actions → core/workspace-app/actions}/ddev-addons.js +0 -0
- /package/{actions → core/workspace-app/actions}/ddev-mail.js +0 -0
- /package/{actions → core/workspace-app/actions}/folders.js +0 -0
- /package/{actions → core/workspace-app/actions}/images-svg.js +0 -0
- /package/{actions → core/workspace-app/actions}/images.js +0 -0
- /package/{actions → core/workspace-app/actions}/navigation.js +0 -0
- /package/{actions → core/workspace-app/actions}/node.js +0 -0
- /package/{actions → core/workspace-app/actions}/notes.js +0 -0
- /package/{actions → core/workspace-app/actions}/plugins.js +0 -0
- /package/{actions → core/workspace-app/actions}/project-make.js +0 -0
- /package/{actions → core/workspace-app/actions}/row-actions.js +0 -0
- /package/{actions → core/workspace-app/actions}/screens.js +0 -0
- /package/{actions → core/workspace-app/actions}/video-edit.js +0 -0
- /package/{ai-inventory.js → core/workspace-app/ai-inventory.js} +0 -0
- /package/{ai-items.js → core/workspace-app/ai-items.js} +0 -0
- /package/{assistant-cast.js → core/workspace-app/assistant-cast.js} +0 -0
- /package/{assistant-suggestions.js → core/workspace-app/assistant-suggestions.js} +0 -0
- /package/{audio-voice.js → core/workspace-app/audio-voice.js} +0 -0
- /package/{auth-google.js → core/workspace-app/auth-google.js} +0 -0
- /package/{build-ai.js → core/workspace-app/build-ai.js} +0 -0
- /package/{build-order-page.js → core/workspace-app/build-order-page.js} +0 -0
- /package/{build-order.js → core/workspace-app/build-order.js} +0 -0
- /package/{builder-args.js → core/workspace-app/builder-args.js} +0 -0
- /package/{changelog.js → core/workspace-app/changelog.js} +0 -0
- /package/{chat-threads.js → core/workspace-app/chat-threads.js} +0 -0
- /package/{checks.js → core/workspace-app/checks.js} +0 -0
- /package/{claude-args.js → core/workspace-app/claude-args.js} +0 -0
- /package/{claude-sessions.js → core/workspace-app/claude-sessions.js} +0 -0
- /package/{command-author.js → core/workspace-app/command-author.js} +0 -0
- /package/{command-block.js → core/workspace-app/command-block.js} +0 -0
- /package/{commands → core/workspace-app/commands}/defaults.yml +0 -0
- /package/{commands-page.js → core/workspace-app/commands-page.js} +0 -0
- /package/{commands.js → core/workspace-app/commands.js} +0 -0
- /package/{cucumber.js → core/workspace-app/cucumber.js} +0 -0
- /package/{ddev-addons-page.js → core/workspace-app/ddev-addons-page.js} +0 -0
- /package/{ddev-addons.js → core/workspace-app/ddev-addons.js} +0 -0
- /package/{ddev-custom-commands.js → core/workspace-app/ddev-custom-commands.js} +0 -0
- /package/{ddev-domains.js → core/workspace-app/ddev-domains.js} +0 -0
- /package/{ddev-import.js → core/workspace-app/ddev-import.js} +0 -0
- /package/{ddev-mail-page.js → core/workspace-app/ddev-mail-page.js} +0 -0
- /package/{ddev-mail.js → core/workspace-app/ddev-mail.js} +0 -0
- /package/{ddev-options.js → core/workspace-app/ddev-options.js} +0 -0
- /package/{ddev-snapshots.js → core/workspace-app/ddev-snapshots.js} +0 -0
- /package/{ddev.js → core/workspace-app/ddev.js} +0 -0
- /package/{docs → core/workspace-app/docs}/DEVELOPER-GUIDE.md +0 -0
- /package/{docs → core/workspace-app/docs}/README.md +0 -0
- /package/{docs → core/workspace-app/docs}/REFERENCE.md +0 -0
- /package/{docs → core/workspace-app/docs}/USER-GUIDE.md +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/assistant/avatar-board.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/assistant/avatar-coffee.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/assistant/avatar-colours.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/assistant/avatar-icons.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/assistant/avatar-moves.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/assistant/avatar-pick-cookieman.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/assistant/avatar-settings-voices.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/assistant/avatar-status.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/create-card/create-card.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/create-card/start-ai.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/guide-clone-address.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/guide-clone-worktree-off.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/guide-clone-worktree-on.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/guide-ddev-menu.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/guide-domains.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/guide-home.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/guide-ide-menu.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/guide-remove-refusal.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/guide-rows-worktree.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/guide-screens.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/guide-settings.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/guide-workspace-page.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/home/card-settings.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/home/drag-reorder.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/home/edit-card.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/images/claude-code-image.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/images/edit-with-ai.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/images/gallery.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/images/generate-description.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/images/generate-plan.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/images/providers.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/images/svg-form.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/images/svg-result.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/images/upload.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/new-folder/2-form.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/new-folder/8-ddev-options.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/new-folder/files-folder.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/projects/ddev-custom-commands.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/projects/state-chip-stop.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/dashboard-dark.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/dashboard-light.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/dev-dark.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/dev-light.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/docs-dark.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/docs-light.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/icons/ai.svg +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/icons/code.svg +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/icons/docs.svg +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/icons/services.svg +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/icons/sites.svg +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/test-report-dark.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/test-report-light.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/test-scenarios.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/test-steps.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/videos-dark.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/readme/videos-light.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/screens-menu.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/screens-new.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/settings/auth-google-lists.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/settings/delete-1-row.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/settings/delete-2-confirm.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/settings/delete-3-type-name.png +0 -0
- /package/{docs → core/workspace-app/docs}/screenshots/settings/delete-4-type-yes.png +0 -0
- /package/{event-log.js → core/workspace-app/event-log.js} +0 -0
- /package/{files-browser.js → core/workspace-app/files-browser.js} +0 -0
- /package/{folders.js → core/workspace-app/folders.js} +0 -0
- /package/{format.js → core/workspace-app/format.js} +0 -0
- /package/{github-auth.js → core/workspace-app/github-auth.js} +0 -0
- /package/{html.js → core/workspace-app/html.js} +0 -0
- /package/{icons.js → core/workspace-app/icons.js} +0 -0
- /package/{images-ai.js → core/workspace-app/images-ai.js} +0 -0
- /package/{images-create.js → core/workspace-app/images-create.js} +0 -0
- /package/{images-page.js → core/workspace-app/images-page.js} +0 -0
- /package/{images-records.js → core/workspace-app/images-records.js} +0 -0
- /package/{images-render.js → core/workspace-app/images-render.js} +0 -0
- /package/{images-svg-core.js → core/workspace-app/images-svg-core.js} +0 -0
- /package/{images-svg-sanitize.js → core/workspace-app/images-svg-sanitize.js} +0 -0
- /package/{images-svg.js → core/workspace-app/images-svg.js} +0 -0
- /package/{images.js → core/workspace-app/images.js} +0 -0
- /package/{jobs.js → core/workspace-app/jobs.js} +0 -0
- /package/{linger.js → core/workspace-app/linger.js} +0 -0
- /package/{lists.js → core/workspace-app/lists.js} +0 -0
- /package/{media-info.js → core/workspace-app/media-info.js} +0 -0
- /package/{navigation-page.js → core/workspace-app/navigation-page.js} +0 -0
- /package/{navigation.js → core/workspace-app/navigation.js} +0 -0
- /package/{notes.js → core/workspace-app/notes.js} +0 -0
- /package/{palette-index.js → core/workspace-app/palette-index.js} +0 -0
- /package/{playwright.config.js → core/workspace-app/playwright.config.js} +0 -0
- /package/{plugin-install.js → core/workspace-app/plugin-install.js} +0 -0
- /package/{plugin-loader.js → core/workspace-app/plugin-loader.js} +0 -0
- /package/{plugin-manifest.js → core/workspace-app/plugin-manifest.js} +0 -0
- /package/{plugin-settings.js → core/workspace-app/plugin-settings.js} +0 -0
- /package/{plugins → core/workspace-app/plugins}/workspace-notes/index.js +0 -0
- /package/{project-make.js → core/workspace-app/project-make.js} +0 -0
- /package/{project-name.js → core/workspace-app/project-name.js} +0 -0
- /package/{public → core/workspace-app/public}/assistant-avatar-moves.js +0 -0
- /package/{public → core/workspace-app/public}/assistant-avatar-ui.js +0 -0
- /package/{public → core/workspace-app/public}/assistant-avatar.js +0 -0
- /package/{public → core/workspace-app/public}/avatar/druplicon.vrm +0 -0
- /package/{public → core/workspace-app/public}/css/base.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/ai-assistant.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/assistant-avatar.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/assistant-views.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/build-order.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/clone-as-a-git-worktree.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/command-palette.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/commands-center.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/confirm-dialog.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/create-card.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/ddev-menu.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/deep-chat.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/density.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/floating-assistant-workspace-pages.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/folders.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/full-height-left-assistant-sidebar-all-pages.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/full-height-right-actions-rail-pages-that-have-actions.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/grid-and-list.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/help-page.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/hero.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/images.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/layout-rhythm-and-spacing-polish.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/mic-on-any-field-that-wants-typing.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/modal-fit.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/page-width.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/plugins-page.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/project-cards.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/project-rows.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/reordering-the-workspace-cards.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/responsive-home-and-the-workspace-pages.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/running-commands-as-toasts.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/settings-editor-core-config-yml.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/short-results-as-a-toast-at-the-top.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/sound-player.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/suggest-agents-skills-commands.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/tab-modal.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/terminals.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/test-report-media-one-file-per-row-paged.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/top-toolbar-logo-breadcrumb.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/video-edit.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/web-ide-open-with.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/working-indicators.css +0 -0
- /package/{public → core/workspace-app/public}/css/components/workspace-cards.css +0 -0
- /package/{public → core/workspace-app/public}/favicon.ico +0 -0
- /package/{public → core/workspace-app/public}/favicon.png +0 -0
- /package/{public → core/workspace-app/public}/htmx.min.js +0 -0
- /package/{public → core/workspace-app/public}/logo.png +0 -0
- /package/{public → core/workspace-app/public}/media-player.js +0 -0
- /package/{public → core/workspace-app/public}/mic.js +0 -0
- /package/{public → core/workspace-app/public}/narration.js +0 -0
- /package/{public → core/workspace-app/public}/palette.js +0 -0
- /package/{public → core/workspace-app/public}/sortable.js +0 -0
- /package/{public → core/workspace-app/public}/suggest.js +0 -0
- /package/{public → core/workspace-app/public}/terminal.js +0 -0
- /package/{public → core/workspace-app/public}/themes/default/theme.css +0 -0
- /package/{public → core/workspace-app/public}/themes/ember/theme.css +0 -0
- /package/{public → core/workspace-app/public}/themes/press/theme.css +0 -0
- /package/{public → core/workspace-app/public}/themes/slate/theme.css +0 -0
- /package/{public → core/workspace-app/public}/touch-icon.png +0 -0
- /package/{public → core/workspace-app/public}/ui.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/ace/LICENSE.txt +0 -0
- /package/{public → core/workspace-app/public}/vendor/ace/ace.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/ace/ext-language_tools.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/ace/ext-searchbox.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/ace/mode-css.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/ace/mode-html.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/ace/mode-javascript.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/ace/mode-markdown.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/ace/mode-sh.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/ace/mode-yaml.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/ace/theme-textmate.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/ace/theme-tomorrow_night.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/ace/worker-yaml.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/deep-chat.LICENSE +0 -0
- /package/{public → core/workspace-app/public}/vendor/deep-chat.bundle.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/fonts/dm-serif-text-LICENSE.txt +0 -0
- /package/{public → core/workspace-app/public}/vendor/fonts/dm-serif-text-latin-400-italic.woff2 +0 -0
- /package/{public → core/workspace-app/public}/vendor/fonts/dm-serif-text-latin-400-normal.woff2 +0 -0
- /package/{public → core/workspace-app/public}/vendor/fonts/figtree-LICENSE.txt +0 -0
- /package/{public → core/workspace-app/public}/vendor/fonts/figtree-latin-400-italic.woff2 +0 -0
- /package/{public → core/workspace-app/public}/vendor/fonts/figtree-latin-400-normal.woff2 +0 -0
- /package/{public → core/workspace-app/public}/vendor/fonts/figtree-latin-600-italic.woff2 +0 -0
- /package/{public → core/workspace-app/public}/vendor/fonts/figtree-latin-600-normal.woff2 +0 -0
- /package/{public → core/workspace-app/public}/vendor/fonts/jetbrains-mono-LICENSE.txt +0 -0
- /package/{public → core/workspace-app/public}/vendor/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
- /package/{public → core/workspace-app/public}/vendor/fonts/ubuntu-mono-LICENSE.txt +0 -0
- /package/{public → core/workspace-app/public}/vendor/fonts/ubuntu-mono-latin-wght-normal.woff2 +0 -0
- /package/{public → core/workspace-app/public}/vendor/tabler-LICENSE.txt +0 -0
- /package/{public → core/workspace-app/public}/vendor/tabler-sprite.svg +0 -0
- /package/{public → core/workspace-app/public}/vendor/three/LICENSE +0 -0
- /package/{public → core/workspace-app/public}/vendor/three/addons/loaders/GLTFLoader.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/three/addons/utils/BufferGeometryUtils.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/three/addons/utils/SkeletonUtils.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/three/three.core.min.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/three/three.module.min.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/three-vrm/LICENSE +0 -0
- /package/{public → core/workspace-app/public}/vendor/three-vrm/three-vrm.module.min.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/uikit-icons.min.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/uikit.min.css +0 -0
- /package/{public → core/workspace-app/public}/vendor/uikit.min.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/webship-icons/ui/bookmark-outlined.svg +0 -0
- /package/{public → core/workspace-app/public}/vendor/webship-icons/ui/headset.svg +0 -0
- /package/{public → core/workspace-app/public}/vendor/webship-icons/ui/menu.svg +0 -0
- /package/{public → core/workspace-app/public}/vendor/webship-icons/ui/pause.svg +0 -0
- /package/{public → core/workspace-app/public}/vendor/webship-icons/ui/play.svg +0 -0
- /package/{public → core/workspace-app/public}/vendor/webship-icons/ui/share.svg +0 -0
- /package/{public → core/workspace-app/public}/vendor/webship-icons/ui/sound-off.svg +0 -0
- /package/{public → core/workspace-app/public}/vendor/webship-icons/ui/sound-on.svg +0 -0
- /package/{public → core/workspace-app/public}/vendor/webship-icons/ui/stop.svg +0 -0
- /package/{public → core/workspace-app/public}/vendor/xterm/addon-fit.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/xterm/addon-unicode11.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/xterm/addon-web-links.js +0 -0
- /package/{public → core/workspace-app/public}/vendor/xterm/xterm.css +0 -0
- /package/{public → core/workspace-app/public}/vendor/xterm/xterm.js +0 -0
- /package/{rag.js → core/workspace-app/rag.js} +0 -0
- /package/{reader.js → core/workspace-app/reader.js} +0 -0
- /package/{repo-blobs.js → core/workspace-app/repo-blobs.js} +0 -0
- /package/{report-pdf.js → core/workspace-app/report-pdf.js} +0 -0
- /package/{row-layout.js → core/workspace-app/row-layout.js} +0 -0
- /package/{screenrc → core/workspace-app/screenrc} +0 -0
- /package/{screens.js → core/workspace-app/screens.js} +0 -0
- /package/{scripts → core/workspace-app/scripts}/code-server-start.sh +0 -0
- /package/{scripts → core/workspace-app/scripts}/images-claude-finish.js +0 -0
- /package/{scripts → core/workspace-app/scripts}/screen-host.sh +0 -0
- /package/{scripts → core/workspace-app/scripts}/screen-runner.js +0 -0
- /package/{scripts → core/workspace-app/scripts}/screen-then.js +0 -0
- /package/{scripts → core/workspace-app/scripts}/update.sh +0 -0
- /package/{settings-file.js → core/workspace-app/settings-file.js} +0 -0
- /package/{speech.js → core/workspace-app/speech.js} +0 -0
- /package/{tab-modal.js → core/workspace-app/tab-modal.js} +0 -0
- /package/{test-reports.js → core/workspace-app/test-reports.js} +0 -0
- /package/{themes.js → core/workspace-app/themes.js} +0 -0
- /package/{transcripts.js → core/workspace-app/transcripts.js} +0 -0
- /package/{urls.js → core/workspace-app/urls.js} +0 -0
- /package/{validate.js → core/workspace-app/validate.js} +0 -0
- /package/{version-check.js → core/workspace-app/version-check.js} +0 -0
- /package/{video-edit.js → core/workspace-app/video-edit.js} +0 -0
- /package/{waiting.js → core/workspace-app/waiting.js} +0 -0
- /package/{workspace-card-tools.js → core/workspace-app/workspace-card-tools.js} +0 -0
- /package/{workspace-delete.js → core/workspace-app/workspace-delete.js} +0 -0
- /package/{workspace-types.js → core/workspace-app/workspace-types.js} +0 -0
- /package/{workspaces.js → core/workspace-app/workspaces.js} +0 -0
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
# Paths are not listed here: the tooling locates itself from the checkout, for
|
|
2
|
+
# whoever is running it. Add root/path/scripts/config/backups only to override
|
|
3
|
+
# that (or export WORKSPACE_ROOT/PATH/SCRIPTS/CONFIG).
|
|
4
|
+
# The admin user a fresh install is given — Drupal, Webship, Drupal CMS and anything else
|
|
5
|
+
# built here. These are local development sites, so `pass` is deliberately NOT treated as a
|
|
6
|
+
# secret: the settings form shows it, because checking what you will log in with is the whole
|
|
7
|
+
# point of the field.
|
|
8
|
+
account:
|
|
9
|
+
name: webmaster
|
|
10
|
+
pass: CHANGE_ME
|
|
11
|
+
mail: info@webship.co
|
|
12
|
+
|
|
13
|
+
# Who contributions are credited to — on webship/workspace, webship/ai-agents and every
|
|
14
|
+
# drupal.org issue, merge request and pull request this tooling opens. Per machine: this live
|
|
15
|
+
# copy holds your real values, the committed one ships CHANGE_ME.
|
|
16
|
+
# After bootstrap.sh these are $contributor_name and $contributor_email in any
|
|
17
|
+
# cmd-*.sh. The Webship agents read them too — see webship/ai-agents
|
|
18
|
+
# .claude/agents/RULES.md, "Contributor identity".
|
|
19
|
+
contributor:
|
|
20
|
+
name: CHANGE_ME
|
|
21
|
+
email: CHANGE_ME
|
|
22
|
+
|
|
23
|
+
# AI provider keys for the sites this workspace builds. When a built site has
|
|
24
|
+
# the AI stack (Drupal CMS AI, Webship AI), set_ai_provider_keys wires these
|
|
25
|
+
# in after install. Placeholders are skipped; real keys live ONLY in your own
|
|
26
|
+
# checkout — never commit them. parse_yaml flattens each to
|
|
27
|
+
# $ai_providers_<provider>_api_key.
|
|
28
|
+
git:
|
|
29
|
+
# One block per forge: GitHub, drupal.org's GitLab at git.drupalcode.org, and Bitbucket. Each
|
|
30
|
+
# holds the host, the account name that forge knows you by, the address commits carry there,
|
|
31
|
+
# and its token. `drupal` IS a GitLab instance, which is why there is no separate gitlab entry.
|
|
32
|
+
#
|
|
33
|
+
# `token` renders as an empty password field: the value is never sent back to the browser,
|
|
34
|
+
# never echoed into a job log, never written to actions.log. The commit NAME comes from
|
|
35
|
+
# contributor.name above; only the address varies per forge.
|
|
36
|
+
github:
|
|
37
|
+
host: github.com
|
|
38
|
+
# Authenticate with the `gh` CLI's own login when it works, and only fall back to the token
|
|
39
|
+
# below. Inside the dashboard container gh is not signed in — it reads the same ~/.config/gh
|
|
40
|
+
# but the token lives in the host keyring, which the container cannot read. That is what the
|
|
41
|
+
# token is for.
|
|
42
|
+
use_gh_cli: true
|
|
43
|
+
username: CHANGE_ME
|
|
44
|
+
email: CHANGE_ME
|
|
45
|
+
token: CHANGE_ME
|
|
46
|
+
drupal:
|
|
47
|
+
host: git.drupalcode.org
|
|
48
|
+
username: CHANGE_ME
|
|
49
|
+
email: CHANGE_ME
|
|
50
|
+
token: CHANGE_ME
|
|
51
|
+
bitbucket:
|
|
52
|
+
host: bitbucket.org
|
|
53
|
+
username: CHANGE_ME
|
|
54
|
+
email: CHANGE_ME
|
|
55
|
+
token: CHANGE_ME
|
|
56
|
+
|
|
57
|
+
sources:
|
|
58
|
+
# Where a sync pulls from, and where a proposed change is filed. Change these to work from a
|
|
59
|
+
# fork or a different host — nothing here is hardcoded. An env var still wins for a one-off run.
|
|
60
|
+
tooling:
|
|
61
|
+
# This workspace's own commands, scripts and dashboard.
|
|
62
|
+
host: github.com
|
|
63
|
+
repo: webship/workspace
|
|
64
|
+
ref: 1.0.x
|
|
65
|
+
ai_items:
|
|
66
|
+
# The shared AI Agents, AI Skills and Prompts.
|
|
67
|
+
host: github.com
|
|
68
|
+
repo: webship/ai-agents
|
|
69
|
+
ref: main
|
|
70
|
+
|
|
71
|
+
ai_providers:
|
|
72
|
+
# The local Claude Code CLI comes first and is the default: it needs no key of its own —
|
|
73
|
+
# it uses this machine's own Claude Code login — so nothing is sent to a third-party API
|
|
74
|
+
# and there is no key to leak. Set active: false to fall through to the keyed providers
|
|
75
|
+
# below, in the order they appear. An ANTHROPIC_API_KEY/OPENAI_API_KEY/GEMINI_API_KEY in
|
|
76
|
+
# the environment still wins over all of this, for a one-off run.
|
|
77
|
+
claude_code_cli:
|
|
78
|
+
active: true
|
|
79
|
+
openai:
|
|
80
|
+
api_key: sk-change-this
|
|
81
|
+
anthropic:
|
|
82
|
+
api_key: sk-change-this
|
|
83
|
+
gemini:
|
|
84
|
+
api_key: sk-change-this
|
|
85
|
+
xai:
|
|
86
|
+
api_key: sk-change-this
|
|
87
|
+
stability:
|
|
88
|
+
api_key: sk-change-this
|
|
89
|
+
workspaces: []
|
|
90
|
+
# Workspace folders are plugins (dev, test, drupal-modules, …): `webship-workspace plugin require <name>`
|
|
91
|
+
# puts one on this list when you activate it. See Settings → Plugins, or `webship-workspace catalog`.
|
|
92
|
+
|
|
93
|
+
# The base domain every dashboard URL is built from, and what DDEV routes.
|
|
94
|
+
#
|
|
95
|
+
# <project>.<tld> the first label is the DDEV project name, the rest is the project TLD
|
|
96
|
+
# workspace.ddev.site the dashboard
|
|
97
|
+
# dev.workspace.ddev.site a workspace page
|
|
98
|
+
# blog1.dev.workspace... a project's site
|
|
99
|
+
#
|
|
100
|
+
# Change it with the command, never by hand — it applies the TLD to DDEV as well, and editing this
|
|
101
|
+
# line alone leaves the dashboard's links and DDEV's routing pointing at different places:
|
|
102
|
+
#
|
|
103
|
+
# bash ~/workspace/core/scripts/autostart.sh --domain workspace.ddev.site
|
|
104
|
+
#
|
|
105
|
+
# Keep ddev.site on a laptop: *.ddev.site resolves to 127.0.0.1 at ANY depth, which is the only
|
|
106
|
+
# reason the nested scheme works with an empty /etc/hosts, and /etc/hosts cannot hold wildcards.
|
|
107
|
+
# On a Docker host or dedicated server, use your own domain and point *.<domain> at the host.
|
|
108
|
+
# ~/workspace with the DDEV project name `workspace` is the blessed default —
|
|
109
|
+
# leave this as is there. Additional side-by-side checkouts (~/webship-workspace,
|
|
110
|
+
# ~/un-workspace, …) each need their own identity: in that checkout run
|
|
111
|
+
# cd core/workspace-app && ddev config --project-name=<folder-name>
|
|
112
|
+
# and set hub_domain to <folder-name>.ddev.site (or delete the key — it then
|
|
113
|
+
# derives from the DDEV project name). Screen logs, backups and graphs already
|
|
114
|
+
# live inside each checkout, so nothing else collides.
|
|
115
|
+
hub_domain: workspace.ddev.site
|
|
116
|
+
|
|
117
|
+
# The Workspace's default language: what the AI Assistant answers in, listens for and speaks.
|
|
118
|
+
# en-US, en-GB, ar-JO, ar-SA, ar-AE, ar-EG, fr-FR, de-DE, es-ES or tr-TR. assistant.speech_language,
|
|
119
|
+
# when set, still pins the microphone and the voice on their own.
|
|
120
|
+
language: en-US
|
|
121
|
+
|
|
122
|
+
# Second storage: a folder on another disk that whole workspace folders can live on, each one a
|
|
123
|
+
# symlink from this tree. Per machine and never synced, like contributor:. Empty means none.
|
|
124
|
+
# Managed with core/scripts/storage.sh (--status, --move, --back, --mounts).
|
|
125
|
+
storage:
|
|
126
|
+
second: ""
|
|
127
|
+
|
|
128
|
+
# Whether the dashboard comes back on its own after a reboot.
|
|
129
|
+
# Install the boot service with: bash ~/workspace/core/scripts/autostart.sh --enable
|
|
130
|
+
dashboard:
|
|
131
|
+
# Which projects start at boot. A word, not only a list:
|
|
132
|
+
# workspace just the dashboard — the default; seconds to boot, everything else one click away
|
|
133
|
+
# running whatever was running at the last clean shutdown
|
|
134
|
+
# all every registered project (each is a web + db container competing for RAM)
|
|
135
|
+
# dev1,test2 exactly those, in that order
|
|
136
|
+
# The dashboard is always started first and always included, whatever this says.
|
|
137
|
+
autostart: workspace
|
|
138
|
+
|
|
139
|
+
# The AI assistant panel, and its voice. Last in this file because it is the longest block and the
|
|
140
|
+
# least often edited — the things above it are the ones you come here to change.
|
|
141
|
+
#
|
|
142
|
+
# Speech is the browser's own, in both directions: no key, no service, nothing leaves the machine.
|
|
143
|
+
# Every value below is optional and the defaults are what ships.
|
|
144
|
+
assistant:
|
|
145
|
+
intro: true
|
|
146
|
+
# What the assistant is CALLED, everywhere it is named: the panel's heading, the control in the
|
|
147
|
+
# navigation, the launcher and the full page at /assistant. This is the default — the home
|
|
148
|
+
# dashboard and every page that belongs to no workspace. A workspace overrides it with its own
|
|
149
|
+
# `assistant: name:` in workspace.<name>.settings.yml.
|
|
150
|
+
name: AI Assistant
|
|
151
|
+
# What the composer says when it is empty. `none` (or off / default / auto) means no placeholder,
|
|
152
|
+
# which is what ships: an empty field with a cursor in it already says "type here", and a prompt
|
|
153
|
+
# that suggests what to ask narrows what gets asked. Overridable per workspace the same way.
|
|
154
|
+
placeholder: none
|
|
155
|
+
# The assistant's avatar: the one the robot icon in the panel shows first, one of `avatars`, hidden
|
|
156
|
+
# (and silent) with the next click. `none` takes the icon away.
|
|
157
|
+
avatar: druplicon
|
|
158
|
+
# The avatars that can be picked in the panel's avatar settings. druplicon ships with the dashboard;
|
|
159
|
+
# any other name is a character (characters/<name>.json) or a model (public/models/<name>.vrm) in an
|
|
160
|
+
# avatars workspace project, served from there and never copied here. Licences are per model: add
|
|
161
|
+
# only what you may use, and a fan-made model only on your own machine.
|
|
162
|
+
avatars:
|
|
163
|
+
- druplicon
|
|
164
|
+
# Per avatar, optional: the hair colour it starts with (#rrggbb; each browser can pick another), and the
|
|
165
|
+
# Claude Code agent it brings while shown (used only when installed in ~/.claude/agents), e.g.
|
|
166
|
+
# avatar_hair:
|
|
167
|
+
# labiba-meme: "#0074e0"
|
|
168
|
+
# avatar_agents:
|
|
169
|
+
# druplicon: avatar-druplicon
|
|
170
|
+
# Where the assistant keeps what the team teaches it (MEMORY.md), relative to the workspace root.
|
|
171
|
+
# Private to this machine: gitignored, and never copied by sync-tooling or the updater.
|
|
172
|
+
memory: core/workspace-app/.memory
|
|
173
|
+
# The Claude Code agent the assistant runs as, when it is installed in ~/.claude/agents: its rules
|
|
174
|
+
# and skills on top of the dashboard's own. `none` runs the assistant without one.
|
|
175
|
+
agent: webship-workspace
|
|
176
|
+
|
|
177
|
+
# Voice IN — the browser's own speech recognition.
|
|
178
|
+
# false removes the microphone rather than leaving a button that does nothing.
|
|
179
|
+
voice_input: true
|
|
180
|
+
# Send on its own after this many ms of silence. 0 = never; you press send.
|
|
181
|
+
submit_after_silence: 2500
|
|
182
|
+
# Pin the recogniser's language, e.g. en-US, en-GB, ar-JO. Ships as en-US; `auto` follows the browser instead.
|
|
183
|
+
# Worth setting if you dictate anything but your browser's language: a recogniser left on the
|
|
184
|
+
# wrong one does not fail, it returns confident nonsense.
|
|
185
|
+
speech_language: en-US
|
|
186
|
+
# Show words as they are guessed, before the recogniser settles on them.
|
|
187
|
+
interim_results: true
|
|
188
|
+
# Stop listening once the message is sent.
|
|
189
|
+
stop_after_submit: true
|
|
190
|
+
|
|
191
|
+
# Voice OUT — the assistant reads its answer aloud. Browser synthesis, so no key either.
|
|
192
|
+
voice_output: true
|
|
193
|
+
# A voice by name, as the browser lists it (Chrome: "Google US English"; the exact names differ
|
|
194
|
+
# per browser and per OS). `default` uses the browser default; an unknown name falls back to it.
|
|
195
|
+
voice_name: default
|
|
196
|
+
speech_rate: 1
|
|
197
|
+
speech_pitch: 1
|
|
198
|
+
speech_volume: 1
|
|
199
|
+
|
|
200
|
+
# Spoken words that ACT instead of being typed. true listens for the command's own word —
|
|
201
|
+
# command_stop: true listens for "stop". Each one costs you that word in ordinary dictation, so
|
|
202
|
+
# describing a submit button would send the message; that is why they are all off.
|
|
203
|
+
# A phrase of your own works too, and is the only way to have one in another language:
|
|
204
|
+
# command_stop: توقف
|
|
205
|
+
command_submit: false
|
|
206
|
+
command_stop: false
|
|
207
|
+
command_pause: false
|
|
208
|
+
command_resume: false
|
|
209
|
+
command_clear: false
|
|
210
|
+
|
|
211
|
+
# Optional dashboard features, per plugin — folders under core/workspace-app/plugins/ or npm
|
|
212
|
+
# modules (module: <require-name>). `workspaces` limits which folders get the feature; empty or
|
|
213
|
+
# absent means all of them. See core/workspace-app/PLUGINS.md to write one.
|
|
214
|
+
plugins: {}
|
|
215
|
+
# Every optional feature is an npm package @webship.co/workspace-<name>; `plugins.sh --activate` adds
|
|
216
|
+
# its block here. Nothing is added until you ask for it.
|
|
217
|
+
|
|
218
|
+
# ElevenLabs, for the final voiceover of a narrated video (videos/cmd-tools-elevenlabs.sh). Nothing is
|
|
219
|
+
# sent to ElevenLabs unless a person agrees to a run, and the stage is not offered without a real key.
|
|
220
|
+
# ELEVENLABS_API_KEY in the environment wins over api_key. voice_id `ask` means choose one each time.
|
|
221
|
+
# region: global | us | eu | in | sg (an isolated residency environment is a separate account and key).
|
|
222
|
+
elevenlabs:
|
|
223
|
+
api_key: CHANGE_ME
|
|
224
|
+
voice_id: ask
|
|
225
|
+
model_id: eleven_v4
|
|
226
|
+
region: global
|
|
227
|
+
pronunciation: ""
|
|
228
|
+
|
|
229
|
+
# Short codes for the name the Build form proposes.
|
|
230
|
+
#
|
|
231
|
+
# A name is `<code><major>x<minor><patch>b<n>`:
|
|
232
|
+
#
|
|
233
|
+
# w11x0xb1 Webship, the 11.0.x branch, first build
|
|
234
|
+
# w11x00b1 Webship, the ~11.0.0 release
|
|
235
|
+
#
|
|
236
|
+
# The code comes from the product's TITLE. Several words give their initials — Haven is `h`,
|
|
237
|
+
# Website Starter is `ws`, Drupal CMS is `dc`. A single word keeps its word, because reducing it to a
|
|
238
|
+
# letter is where a code stops being readable and starts being a puzzle, and because it collides:
|
|
239
|
+
# Haven and Healthcare would both be `h`.
|
|
240
|
+
#
|
|
241
|
+
# Override any of them here. The three below are the ones the derivation gets wrong or that are typed
|
|
242
|
+
# often enough to have earned a letter.
|
|
243
|
+
short_codes:
|
|
244
|
+
webship: w
|
|
245
|
+
drupal: d
|
|
246
|
+
# Webship's own site templates: their initials all come out as `ws`, so each gets a code.
|
|
247
|
+
website_starter: wst
|
|
248
|
+
webship_starter: wsh
|
|
249
|
+
webship_portal: wpo
|
|
250
|
+
webapi_starter: wapi
|
|
251
|
+
webships_starter: wss
|
|
252
|
+
webships_project: wsp
|
|
253
|
+
|
|
254
|
+
# Sign in with Google for the dashboard itself. Off, which is right on a laptop where the dashboard answers
|
|
255
|
+
# only that laptop. Turn it on for a remote hub (hub_domain set to a public domain): every page, action and
|
|
256
|
+
# terminal then needs a Google account whose verified email is in allowed_domains (or allowed_emails).
|
|
257
|
+
# It uses the same OAuth client as the Google Drive plugin (plugin.google-drive-sync.settings.yml); add this
|
|
258
|
+
# redirect URI to that client:
|
|
259
|
+
# https://<hub_domain>/auth/google/callback
|
|
260
|
+
# Nothing allowed means nobody is let in. Locked out? Set enabled back to false here; it applies at once.
|
|
261
|
+
auth:
|
|
262
|
+
google:
|
|
263
|
+
enabled: false
|
|
264
|
+
allowed_domains: []
|
|
265
|
+
# allowed_emails:
|
|
266
|
+
# - someone@example.org
|
|
267
|
+
# How long a sign-in lasts, in hours (1 to 720).
|
|
268
|
+
session_hours: 12
|
|
269
|
+
|
|
270
|
+
# Default styling for the dashboard. Every value is optional — the defaults below are what
|
|
271
|
+
# ships, and /settings rewrites only the line you change.
|
|
272
|
+
# mode light | dark | system (system follows the OS setting)
|
|
273
|
+
# editor_theme auto | light | dark (auto follows mode)
|
|
274
|
+
# theme a directory under core/workspace-app/public/themes — the palette every
|
|
275
|
+
# component asks for. `mode` chooses which half of it you see.
|
|
276
|
+
# logo a filename in core/workspace-app/public — not a path or a URL, because
|
|
277
|
+
# everything the dashboard loads is served from itself
|
|
278
|
+
# logo_on_dark the mark to swap in on a dark page; defaults to `logo`
|
|
279
|
+
# favicon the browser-tab icon; defaults to `logo`
|
|
280
|
+
#
|
|
281
|
+
# mode and editor_theme are DEFAULTS, for someone who has not used the theme toggle. A stored
|
|
282
|
+
# choice always wins over them.
|
|
283
|
+
style:
|
|
284
|
+
workspace_name: workspace
|
|
285
|
+
mode: light
|
|
286
|
+
editor_theme: auto
|
|
287
|
+
theme: default
|
|
288
|
+
logo:
|
|
289
|
+
logo_on_dark:
|
|
290
|
+
favicon:
|
|
291
|
+
page_size: 50
|
|
292
|
+
page_sort: newest
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# How the dashboard LOOKS — core/config/style.yml
|
|
2
|
+
#
|
|
3
|
+
# Styling is its own concern, so it has its own file. Which palette, which mode, the logos and
|
|
4
|
+
# favicons, how wide a page runs, how the assistant is shown. It used to sit inside settings.yml
|
|
5
|
+
# under a `style:` key, in a file that is otherwise about where projects are built, who commits,
|
|
6
|
+
# and which API keys this machine holds — so the one file nobody should open casually was also the
|
|
7
|
+
# file you had to open to change a logo.
|
|
8
|
+
#
|
|
9
|
+
# A theme's own TOKENS are not here either: they live in core/config/theme.<name>.yml, one file per
|
|
10
|
+
# theme. This file chooses the theme; that file sets its colours, sizes and spacing.
|
|
11
|
+
#
|
|
12
|
+
# Everything here is a DEFAULT, not an override. A mode, a width or an assistant view chosen from
|
|
13
|
+
# the interface is remembered in that browser and wins — which is the difference between a default
|
|
14
|
+
# and a setting that argues with the person using it.
|
|
15
|
+
#
|
|
16
|
+
# `style:` in settings.yml still works and fills in anything this file does not set, so a machine
|
|
17
|
+
# that has not moved its block yet keeps the appearance it had. Where both set the same key, this
|
|
18
|
+
# file wins.
|
|
19
|
+
|
|
20
|
+
# The word beside the logo in the toolbar.
|
|
21
|
+
workspace_name: Workspace
|
|
22
|
+
|
|
23
|
+
# Which palette the dashboard wears: a directory under core/workspace-app/public/themes/.
|
|
24
|
+
# `default` is the Webship palette. The Settings screen lists every theme on disk, so this comment
|
|
25
|
+
# does not name them — a list here goes stale the first time one is added.
|
|
26
|
+
theme: default
|
|
27
|
+
|
|
28
|
+
# light | dark | system. A default: someone who has used the toggle keeps their choice.
|
|
29
|
+
mode: light
|
|
30
|
+
# The code editor, independently of the page: auto | light | dark. A code editor is somewhere people
|
|
31
|
+
# often want dark even on a light page.
|
|
32
|
+
editor_theme: auto
|
|
33
|
+
|
|
34
|
+
# How the AI assistant is shown, and whether it starts open: sidebar | wide | float | full,
|
|
35
|
+
# and yes | no. Quoted, because unquoted `yes` is a BOOLEAN in YAML 1.1.
|
|
36
|
+
assistant_view: sidebar
|
|
37
|
+
assistant_open: "yes"
|
|
38
|
+
|
|
39
|
+
# How much of the window a page's content may use: comfortable (a 900px reading width) | wide | full.
|
|
40
|
+
page_width: comfortable
|
|
41
|
+
|
|
42
|
+
# Rows before a list pages, and how it is sorted to begin with.
|
|
43
|
+
page_size: 50
|
|
44
|
+
page_sort: newest
|
|
45
|
+
|
|
46
|
+
# Brand assets, from core/workspace-app/public/. One blue mark reads on a light and a dark page, so both point at the same file.
|
|
47
|
+
logo_on_light: logo.png
|
|
48
|
+
logo_on_dark: logo.png
|
|
49
|
+
favicon_svg:
|
|
50
|
+
favicon_png: favicon.png
|
|
51
|
+
# A separate, larger file: a home-screen icon is 180px, and the 32px tab icon blown up to that is a
|
|
52
|
+
# blurry tile.
|
|
53
|
+
touch_icon: touch-icon.png
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# Every token the "default" theme sets — core/config/theme.default.yml
|
|
2
|
+
#
|
|
3
|
+
# Webship. A theme is a palette: it declares custom properties and selects nothing, so every
|
|
4
|
+
# value in it is configuration. They are all here, editable on the Settings screen, rather than
|
|
5
|
+
# only by editing a stylesheet inside the app.
|
|
6
|
+
#
|
|
7
|
+
# Names go without the leading dashes. `tokens:` applies to both halves; `dark:` applies to the
|
|
8
|
+
# dark half only, exactly like the html.dark block in a theme file. Anything here overrides the
|
|
9
|
+
# theme CSS, which is what you get with no YAML at all.
|
|
10
|
+
|
|
11
|
+
tokens:
|
|
12
|
+
brand-primary: "#0074e0"
|
|
13
|
+
brand-secondary: "#2b447c"
|
|
14
|
+
brand-accent: "#e4dcff"
|
|
15
|
+
brand-dark: "#000000"
|
|
16
|
+
brand-light: "#ebe8e5"
|
|
17
|
+
subtle-light: "#f5f3f2"
|
|
18
|
+
subtle-brand: "#deedff"
|
|
19
|
+
subtle-accent: "#f6f3ff"
|
|
20
|
+
text-default: "#000000"
|
|
21
|
+
text-subtle: "#4d4d4d"
|
|
22
|
+
text-inverse: "#ffffff"
|
|
23
|
+
text-light: "#ebe8e5"
|
|
24
|
+
text-brand: "var(--brand-primary)"
|
|
25
|
+
text-accent: "var(--brand-accent)"
|
|
26
|
+
font-primary: "Figtree, \"Helvetica Neue\", Arial, sans-serif"
|
|
27
|
+
font-secondary: "\"DM Serif Text\", Georgia, serif"
|
|
28
|
+
font-code: "\"JetBrains Mono\", ui-monospace, SFMono-Regular, Menlo, monospace"
|
|
29
|
+
weight-regular: 400
|
|
30
|
+
weight-semibold: 600
|
|
31
|
+
leading-heading: 1.4
|
|
32
|
+
leading-display: 1.3
|
|
33
|
+
leading-body: 1.6
|
|
34
|
+
tracking-wide: 0.0625em
|
|
35
|
+
size-h1: 2rem
|
|
36
|
+
size-h2: 1.625rem
|
|
37
|
+
size-h3: 1.5rem
|
|
38
|
+
size-h4: 1.25rem
|
|
39
|
+
size-h5: 1.125rem
|
|
40
|
+
size-h6: 1rem
|
|
41
|
+
size-body: 0.9375rem
|
|
42
|
+
size-small: 0.875rem
|
|
43
|
+
type-h1: "var(--weight-regular) var(--size-h1)/1.15 var(--font-secondary)"
|
|
44
|
+
type-h2: "var(--weight-regular) var(--size-h2)/1.2 var(--font-secondary)"
|
|
45
|
+
type-h3: "var(--weight-semibold) var(--size-h3)/1.25 var(--font-primary)"
|
|
46
|
+
type-h4: "var(--weight-semibold) var(--size-h4)/1.3 var(--font-primary)"
|
|
47
|
+
type-h5: "var(--weight-semibold) var(--size-h5)/1.35 var(--font-primary)"
|
|
48
|
+
type-h6: "var(--weight-semibold) var(--size-h6)/1 var(--font-primary)"
|
|
49
|
+
type-body: "var(--weight-regular) var(--size-body)/var(--leading-body) var(--font-primary)"
|
|
50
|
+
type-body-sm: "var(--weight-regular) var(--size-small)/1.45 var(--font-primary)"
|
|
51
|
+
type-label: "var(--weight-semibold) var(--size-body)/1 var(--font-primary)"
|
|
52
|
+
type-caption: "var(--weight-regular) var(--size-small)/1.35 var(--font-primary)"
|
|
53
|
+
type-mono: "var(--weight-regular) var(--size-body)/1.5 var(--font-code)"
|
|
54
|
+
type-mono-sm: "var(--weight-regular) var(--size-small)/1.4 var(--font-code)"
|
|
55
|
+
tracking-h1: normal
|
|
56
|
+
tracking-h2: normal
|
|
57
|
+
tracking-h3: normal
|
|
58
|
+
tracking-h4: normal
|
|
59
|
+
tracking-h5: normal
|
|
60
|
+
tracking-h6: "var(--tracking-wide)"
|
|
61
|
+
surface: "var(--subtle-light)"
|
|
62
|
+
surface-card: "#ffffff"
|
|
63
|
+
surface-muted: "#f1eef9"
|
|
64
|
+
surface-input: "#ffffff"
|
|
65
|
+
text-subtle-2: "#333333"
|
|
66
|
+
line: "#e2ddd8"
|
|
67
|
+
line-strong: "#c9c2ba"
|
|
68
|
+
link: "#0063c0"
|
|
69
|
+
brand-pressed: "#0063c0"
|
|
70
|
+
brand-2-pressed: "#22355f"
|
|
71
|
+
focus-ring: "rgba(0, 116, 224, .35)"
|
|
72
|
+
ok: "#146c43"
|
|
73
|
+
ok-soft: "#d0e2d9"
|
|
74
|
+
pcard-tool-label: 0rem
|
|
75
|
+
ok-ink: "#14532d"
|
|
76
|
+
danger: "#e71139"
|
|
77
|
+
danger-soft: "#facfd7"
|
|
78
|
+
danger-ink: "#7d1a2e"
|
|
79
|
+
danger-armed: "#a4133c"
|
|
80
|
+
danger-text: "#c20f31"
|
|
81
|
+
warning: "#fdd26e"
|
|
82
|
+
warning-soft: "#fef1d3"
|
|
83
|
+
warning-ink: "#5c4300"
|
|
84
|
+
info: "#0dcaf0"
|
|
85
|
+
info-soft: "#cff4fc"
|
|
86
|
+
info-ink: "#055160"
|
|
87
|
+
success: "#146c43"
|
|
88
|
+
success-soft: "#d0e2d9"
|
|
89
|
+
success-ink: "#0f5132"
|
|
90
|
+
busy-soft: "var(--subtle-brand)"
|
|
91
|
+
busy-ink: "var(--brand-secondary)"
|
|
92
|
+
accent-soft: "var(--subtle-accent)"
|
|
93
|
+
accent-ink: "#4b3fa8"
|
|
94
|
+
chip-bg: "var(--brand-primary)"
|
|
95
|
+
chip-ink: "var(--text-inverse)"
|
|
96
|
+
shadow-card: "0 4px 16px rgba(35, 41, 70, .06)"
|
|
97
|
+
shadow-card-hover: "0 12px 28px rgba(43, 68, 124, .16)"
|
|
98
|
+
shadow-float: "0 1.5rem 3rem rgba(43, 68, 124, .28)"
|
|
99
|
+
shadow-toast: "0 14px 34px rgba(35, 41, 70, .26)"
|
|
100
|
+
toast-ring: "rgba(255, 255, 255, .9)"
|
|
101
|
+
code-bg: "#1f2437"
|
|
102
|
+
code-ink: "#e6e9f5"
|
|
103
|
+
terminal-ink: "#c9f7d4"
|
|
104
|
+
media-bg: "#000000"
|
|
105
|
+
paper: "#ffffff"
|
|
106
|
+
checker-a: "#dcdcdc"
|
|
107
|
+
checker-b: "#d8d8d8"
|
|
108
|
+
checker-bg: "#f4f4f4"
|
|
109
|
+
overlay: "rgba(0, 0, 0, .6)"
|
|
110
|
+
brand-1: "var(--brand-primary)"
|
|
111
|
+
brand-2: "var(--brand-secondary)"
|
|
112
|
+
brand-3: "var(--brand-accent)"
|
|
113
|
+
brand-grad: "linear-gradient(135deg, var(--brand-primary), var(--brand-secondary))"
|
|
114
|
+
ink: "var(--brand-secondary)"
|
|
115
|
+
|
|
116
|
+
# The dark half. Only the tokens that differ at night are listed.
|
|
117
|
+
dark:
|
|
118
|
+
surface: "#0f1626"
|
|
119
|
+
surface-card: "#172033"
|
|
120
|
+
surface-muted: "#1f2a42"
|
|
121
|
+
surface-input: "#0f1729"
|
|
122
|
+
text-default: "#e8edf6"
|
|
123
|
+
text-subtle-2: "#c2cbdd"
|
|
124
|
+
text-subtle: "#93a0b8"
|
|
125
|
+
line: "#27334d"
|
|
126
|
+
line-strong: "#3b4a6d"
|
|
127
|
+
link: "#57a8ff"
|
|
128
|
+
brand-pressed: "#2f8fe8"
|
|
129
|
+
brand-2-pressed: "#1b2b4d"
|
|
130
|
+
focus-ring: "rgba(87, 168, 255, .40)"
|
|
131
|
+
ok-soft: "#10261a"
|
|
132
|
+
ok-ink: "#a8e6b8"
|
|
133
|
+
danger-soft: "#2a1620"
|
|
134
|
+
danger-ink: "#ffd0da"
|
|
135
|
+
danger-armed: "#e0466b"
|
|
136
|
+
danger-text: "#ff8fa3"
|
|
137
|
+
warning-soft: "#2e2610"
|
|
138
|
+
warning-ink: "#fde4a3"
|
|
139
|
+
info-soft: "#0c2a33"
|
|
140
|
+
info-ink: "#9eeaf9"
|
|
141
|
+
success-soft: "#10291d"
|
|
142
|
+
success-ink: "#a3d9bd"
|
|
143
|
+
busy-soft: "#1a2440"
|
|
144
|
+
busy-ink: "#b9c9ff"
|
|
145
|
+
accent-soft: "#2c2550"
|
|
146
|
+
accent-ink: "#d9d2ff"
|
|
147
|
+
chip-bg: "#33406e"
|
|
148
|
+
chip-ink: "#e8edf6"
|
|
149
|
+
subtle-light: "#131b2c"
|
|
150
|
+
subtle-brand: "#10243d"
|
|
151
|
+
subtle-accent: "#221f3a"
|
|
152
|
+
shadow-card: "0 4px 16px rgba(0, 0, 0, .35)"
|
|
153
|
+
shadow-card-hover: "0 12px 28px rgba(0, 0, 0, .50)"
|
|
154
|
+
shadow-float: "0 1.5rem 3rem rgba(0, 0, 0, .55)"
|
|
155
|
+
shadow-toast: "0 14px 34px rgba(0, 0, 0, .50)"
|
|
156
|
+
toast-ring: "rgba(0, 0, 0, .5)"
|
|
157
|
+
checker-a: "#2a3550"
|
|
158
|
+
checker-b: "#26314a"
|
|
159
|
+
checker-bg: "#131b2c"
|
|
160
|
+
overlay: "rgba(0, 0, 0, .72)"
|
|
161
|
+
ink: "var(--text-default)"
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Dispatch — core/config/theme.dispatch.yml
|
|
2
|
+
#
|
|
3
|
+
# A style in the shape of Upsun Dispatch: OKLCH colour throughout, a violet primary, a lime accent,
|
|
4
|
+
# and Open Sans for text with Space Mono for code. The type is its scale — 36/30/24/20/18 with the
|
|
5
|
+
# line height tightening as the size grows, and tracking from -0.02em down.
|
|
6
|
+
#
|
|
7
|
+
# The colour values were read out of the product's own stylesheet rather than sampled from a
|
|
8
|
+
# screenshot, so they are the values it actually ships.
|
|
9
|
+
#
|
|
10
|
+
# The two families are NOT vendored here — nothing in public/vendor/fonts holds them — so a machine
|
|
11
|
+
# without them falls back through the stack. That is deliberate: a style is a set of values, and
|
|
12
|
+
# shipping two more typefaces to look like somebody else's product is a different decision.
|
|
13
|
+
|
|
14
|
+
name: Dispatch
|
|
15
|
+
|
|
16
|
+
tokens:
|
|
17
|
+
brand-primary: "oklch(54.7% .257 280.028)"
|
|
18
|
+
brand-secondary: "oklch(38.1% .171 280.684)"
|
|
19
|
+
brand-accent: "oklch(92.8% .196 119.528)"
|
|
20
|
+
brand-dark: "oklch(14.1% .004 285.823)"
|
|
21
|
+
brand-light: "oklch(96.7% .001 286.375)"
|
|
22
|
+
subtle-light: "oklch(96.7% .001 286.375)"
|
|
23
|
+
subtle-brand: "oklch(97% .014 254.604)"
|
|
24
|
+
subtle-accent: "oklch(98.2% .03 119.528)"
|
|
25
|
+
text-default: "oklch(0% 0 0)"
|
|
26
|
+
text-subtle: "oklch(55.2% .014 285.938)"
|
|
27
|
+
text-inverse: "oklch(100% 0 0)"
|
|
28
|
+
text-light: "#ebe8e5"
|
|
29
|
+
text-brand: "var(--brand-primary)"
|
|
30
|
+
text-accent: "var(--brand-accent)"
|
|
31
|
+
font-primary: "Open Sans, \"Open Sans Variable\", ui-sans-serif, system-ui, \"Segoe UI\", Helvetica, Arial, sans-serif"
|
|
32
|
+
font-secondary: "Open Sans, \"Open Sans Variable\", ui-sans-serif, system-ui, \"Segoe UI\", Helvetica, Arial, sans-serif"
|
|
33
|
+
font-code: "\"Space Mono\", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"
|
|
34
|
+
weight-regular: 400
|
|
35
|
+
weight-semibold: 600
|
|
36
|
+
leading-heading: 1.4
|
|
37
|
+
leading-display: 1.3
|
|
38
|
+
leading-body: 1.5
|
|
39
|
+
tracking-wide: 0.0625em
|
|
40
|
+
size-h1: 2.25rem
|
|
41
|
+
size-h2: 1.875rem
|
|
42
|
+
size-h3: 1.5rem
|
|
43
|
+
size-h4: 1.25rem
|
|
44
|
+
size-h5: 1.125rem
|
|
45
|
+
size-h6: 0.8125rem
|
|
46
|
+
size-body: 1.0625rem
|
|
47
|
+
size-small: 0.875rem
|
|
48
|
+
type-h1: "var(--weight-bold, 700) var(--size-h1)/1.1 var(--font-primary)"
|
|
49
|
+
type-h2: "var(--weight-bold, 700) var(--size-h2)/1.15 var(--font-primary)"
|
|
50
|
+
type-h3: "var(--weight-semibold) var(--size-h3)/1.25 var(--font-primary)"
|
|
51
|
+
type-h4: "var(--weight-semibold) var(--size-h4)/1.3 var(--font-primary)"
|
|
52
|
+
type-h5: "var(--weight-semibold) var(--size-h5)/1.35 var(--font-primary)"
|
|
53
|
+
type-h6: "var(--weight-semibold) var(--size-h6)/1 var(--font-primary)"
|
|
54
|
+
type-body: "var(--weight-regular) var(--size-body)/var(--leading-body) var(--font-primary)"
|
|
55
|
+
type-body-sm: "var(--weight-regular) var(--size-small)/1.45 var(--font-primary)"
|
|
56
|
+
type-label: "var(--weight-semibold) var(--size-body)/1 var(--font-primary)"
|
|
57
|
+
type-caption: "var(--weight-regular) var(--size-small)/1.35 var(--font-primary)"
|
|
58
|
+
type-mono: "var(--weight-regular) var(--size-body)/1.5 var(--font-code)"
|
|
59
|
+
type-mono-sm: "var(--weight-regular) var(--size-small)/1.4 var(--font-code)"
|
|
60
|
+
tracking-h1: -0.02em
|
|
61
|
+
tracking-h2: -0.015em
|
|
62
|
+
tracking-h3: -0.01em
|
|
63
|
+
tracking-h4: -0.01em
|
|
64
|
+
tracking-h5: -0.005em
|
|
65
|
+
tracking-h6: 0.08em
|
|
66
|
+
surface: "oklch(100% 0 0)"
|
|
67
|
+
surface-card: "oklch(100% 0 0)"
|
|
68
|
+
surface-muted: "oklch(96.7% .001 286.375)"
|
|
69
|
+
surface-input: "oklch(100% 0 0)"
|
|
70
|
+
text-subtle-2: "oklch(37% .012 285.805)"
|
|
71
|
+
line: "oklch(92% .004 286.32)"
|
|
72
|
+
line-strong: "oklch(87.1% .006 286.286)"
|
|
73
|
+
link: "oklch(54.7% .257 280.028)"
|
|
74
|
+
brand-pressed: "oklch(47.3% .247 278.19)"
|
|
75
|
+
brand-2-pressed: "#22355f"
|
|
76
|
+
focus-ring: "oklch(63.7% .204 285.403 / .40)"
|
|
77
|
+
ok: "oklch(70.9% .115 194.873)"
|
|
78
|
+
ok-soft: "#d0e2d9"
|
|
79
|
+
pcard-tool-label: 0rem
|
|
80
|
+
ok-ink: "#14532d"
|
|
81
|
+
danger: "oklch(57.7% .215 27.325)"
|
|
82
|
+
danger-soft: "#facfd7"
|
|
83
|
+
danger-ink: "#7d1a2e"
|
|
84
|
+
danger-armed: "#a4133c"
|
|
85
|
+
danger-text: "#c20f31"
|
|
86
|
+
warning: "oklch(77.9% .162 79.562)"
|
|
87
|
+
warning-soft: "#fef1d3"
|
|
88
|
+
warning-ink: "#5c4300"
|
|
89
|
+
info: "oklch(54.6% .245 262.881)"
|
|
90
|
+
info-soft: "#cff4fc"
|
|
91
|
+
info-ink: "#055160"
|
|
92
|
+
success: "#146c43"
|
|
93
|
+
success-soft: "#d0e2d9"
|
|
94
|
+
success-ink: "#0f5132"
|
|
95
|
+
busy-soft: "var(--subtle-brand)"
|
|
96
|
+
busy-ink: "var(--brand-secondary)"
|
|
97
|
+
accent-soft: "var(--subtle-accent)"
|
|
98
|
+
accent-ink: "#4b3fa8"
|
|
99
|
+
chip-bg: "oklch(54.7% .257 280.028)"
|
|
100
|
+
chip-ink: "var(--text-inverse)"
|
|
101
|
+
shadow-card: "0 4px 16px rgba(35, 41, 70, .06)"
|
|
102
|
+
shadow-card-hover: "0 12px 28px rgba(43, 68, 124, .16)"
|
|
103
|
+
shadow-float: "0 1.5rem 3rem rgba(43, 68, 124, .28)"
|
|
104
|
+
shadow-toast: "0 14px 34px rgba(35, 41, 70, .26)"
|
|
105
|
+
toast-ring: "rgba(255, 255, 255, .9)"
|
|
106
|
+
code-bg: "#1f2437"
|
|
107
|
+
code-ink: "#e6e9f5"
|
|
108
|
+
terminal-ink: "#c9f7d4"
|
|
109
|
+
media-bg: "#000000"
|
|
110
|
+
paper: "#ffffff"
|
|
111
|
+
checker-a: "#dcdcdc"
|
|
112
|
+
checker-b: "#d8d8d8"
|
|
113
|
+
checker-bg: "#f4f4f4"
|
|
114
|
+
overlay: "rgba(0, 0, 0, .6)"
|
|
115
|
+
brand-1: "var(--brand-primary)"
|
|
116
|
+
brand-2: "var(--brand-secondary)"
|
|
117
|
+
brand-3: "var(--brand-accent)"
|
|
118
|
+
brand-grad: "linear-gradient(135deg, var(--brand-primary), var(--brand-secondary))"
|
|
119
|
+
ink: "var(--brand-secondary)"
|
|
120
|
+
|
|
121
|
+
# The dark half.
|
|
122
|
+
dark:
|
|
123
|
+
surface: "oklch(14.1% .004 285.823)"
|
|
124
|
+
surface-card: "oklch(21% .006 285.885)"
|
|
125
|
+
surface-muted: "oklch(27.4% .005 286.033)"
|
|
126
|
+
surface-input: "oklch(21% .006 285.885)"
|
|
127
|
+
text-default: "oklch(98.5% 0 0)"
|
|
128
|
+
text-subtle-2: "oklch(87.1% .006 286.286)"
|
|
129
|
+
text-subtle: "oklch(71.2% .013 286.067)"
|
|
130
|
+
line: "oklch(27.4% .005 286.033)"
|
|
131
|
+
line-strong: "oklch(37% .012 285.805)"
|
|
132
|
+
link: "oklch(72.6% .151 288.094)"
|
|
133
|
+
brand-pressed: "oklch(63.7% .204 285.403)"
|
|
134
|
+
brand-2-pressed: "#1b2b4d"
|
|
135
|
+
focus-ring: "oklch(63.7% .204 285.403 / .40)"
|
|
136
|
+
ok-soft: "#10261a"
|
|
137
|
+
ok-ink: "#a8e6b8"
|
|
138
|
+
danger-soft: "#2a1620"
|
|
139
|
+
danger-ink: "#ffd0da"
|
|
140
|
+
danger-armed: "#e0466b"
|
|
141
|
+
danger-text: "#ff8fa3"
|
|
142
|
+
warning-soft: "#2e2610"
|
|
143
|
+
warning-ink: "#fde4a3"
|
|
144
|
+
info-soft: "#0c2a33"
|
|
145
|
+
info-ink: "#9eeaf9"
|
|
146
|
+
success-soft: "#10291d"
|
|
147
|
+
success-ink: "#a3d9bd"
|
|
148
|
+
busy-soft: "#1a2440"
|
|
149
|
+
busy-ink: "#b9c9ff"
|
|
150
|
+
accent-soft: "#2c2550"
|
|
151
|
+
accent-ink: "#d9d2ff"
|
|
152
|
+
chip-bg: "oklch(37% .013 285.805)"
|
|
153
|
+
chip-ink: "#e8edf6"
|
|
154
|
+
subtle-light: "oklch(21% .006 285.885)"
|
|
155
|
+
subtle-brand: "oklch(28.2% .091 267.935)"
|
|
156
|
+
subtle-accent: "oklch(29% .075 132)"
|
|
157
|
+
shadow-card: "0 4px 16px rgba(0, 0, 0, .35)"
|
|
158
|
+
shadow-card-hover: "0 12px 28px rgba(0, 0, 0, .50)"
|
|
159
|
+
shadow-float: "0 1.5rem 3rem rgba(0, 0, 0, .55)"
|
|
160
|
+
shadow-toast: "0 14px 34px rgba(0, 0, 0, .50)"
|
|
161
|
+
toast-ring: "rgba(0, 0, 0, .5)"
|
|
162
|
+
checker-a: "#2a3550"
|
|
163
|
+
checker-b: "#26314a"
|
|
164
|
+
checker-bg: "#131b2c"
|
|
165
|
+
overlay: "rgba(0, 0, 0, .72)"
|
|
166
|
+
ink: "var(--text-default)"
|