@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,400 @@
|
|
|
1
|
+
name: workspace
|
|
2
|
+
type: generic
|
|
3
|
+
docroot: public
|
|
4
|
+
php_version: "8.3"
|
|
5
|
+
webserver_type: nginx-fpm
|
|
6
|
+
xdebug_enabled: false
|
|
7
|
+
additional_hostnames:
|
|
8
|
+
- "*.workspace"
|
|
9
|
+
- "*.products.workspace"
|
|
10
|
+
- "*.dev.workspace"
|
|
11
|
+
- "*.test.workspace"
|
|
12
|
+
- "*.demos.workspace"
|
|
13
|
+
- "*.sandboxes.workspace"
|
|
14
|
+
- "*.profiles.workspace"
|
|
15
|
+
- "*.site-templates.workspace"
|
|
16
|
+
- "*.modules.workspace"
|
|
17
|
+
- "*.themes.workspace"
|
|
18
|
+
- "*.libraries.workspace"
|
|
19
|
+
- "*.recipes.workspace"
|
|
20
|
+
- "*.projects.workspace"
|
|
21
|
+
- "*.specs.workspace"
|
|
22
|
+
- "*.graphs.workspace"
|
|
23
|
+
- "*.rag.workspace"
|
|
24
|
+
- "*.ai-agents.workspace"
|
|
25
|
+
- "*.ai-skills.workspace"
|
|
26
|
+
- "*.ai-commands.workspace"
|
|
27
|
+
- "*.ai-prompts.workspace"
|
|
28
|
+
- "*.designs.workspace"
|
|
29
|
+
- "*.images.workspace"
|
|
30
|
+
- "*.videos.workspace"
|
|
31
|
+
- "*.audio.workspace"
|
|
32
|
+
- "*.avatars.workspace"
|
|
33
|
+
- "*.docs.workspace"
|
|
34
|
+
- "*.commands.workspace"
|
|
35
|
+
- "*.worklogs.workspace"
|
|
36
|
+
additional_fqdns: []
|
|
37
|
+
|
|
38
|
+
# Every URL this project serves is https, signed by mkcert's local CA. A machine
|
|
39
|
+
# that has never run mkcert has no CA, so the first thing a new install sees is
|
|
40
|
+
# ERR_CERT_AUTHORITY_INVALID rather than the dashboard — and `ddev start` says so
|
|
41
|
+
# only in a warning, in the middle of a long build log, where it is missed.
|
|
42
|
+
#
|
|
43
|
+
# exec-host, because trust stores live on the host, not in the container. The
|
|
44
|
+
# script is idempotent and silent when there is nothing to do, so it costs a
|
|
45
|
+
# fraction of a second on every later start.
|
|
46
|
+
hooks:
|
|
47
|
+
# BEFORE the container exists: Docker creates any missing bind-mount source as a
|
|
48
|
+
# root-owned directory, which quietly breaks the tool it was meant to share — and
|
|
49
|
+
# takes ~/.local/bin with it, so nothing can install a user binary there either.
|
|
50
|
+
# Creating those paths as you first, and dropping the twg mount while twg is not
|
|
51
|
+
# installed, is what keeps a fresh machine clean.
|
|
52
|
+
pre-start:
|
|
53
|
+
# `|| true`: this reports damage it cannot fix without root, and a start must not
|
|
54
|
+
# fail because a path needs a chown. The message is the point, not the exit code.
|
|
55
|
+
- exec-host: bash "${DDEV_APPROOT}/../scripts/host-mounts.sh" --quiet || true
|
|
56
|
+
post-start:
|
|
57
|
+
- exec-host: bash "${DDEV_APPROOT}/../scripts/trust-https.sh" --quiet
|
|
58
|
+
# Every web_extra_daemon that is not running, started. Normally a no-op.
|
|
59
|
+
#
|
|
60
|
+
# DDEV starts these itself at the end of `ddev start` — and that step RACES supervisord
|
|
61
|
+
# coming up. When it loses, ddev prints
|
|
62
|
+
#
|
|
63
|
+
# Unable to start web_extra_daemons using supervisorctl,
|
|
64
|
+
# stdout=error: <class 'http.client.RemoteDisconnected'> …
|
|
65
|
+
#
|
|
66
|
+
# and then says **Successfully started workspace** anyway. The daemons are left
|
|
67
|
+
# "Not started", so nginx answers **502 Bad Gateway** — the proxy is up and the thing
|
|
68
|
+
# behind it never came up. A start that reports success and leaves the dashboard dead is
|
|
69
|
+
# the worst shape a failure can take, because nothing suggests the start is where to look.
|
|
70
|
+
# Reproduced on this machine, and fixed by this line.
|
|
71
|
+
#
|
|
72
|
+
# supervisord is asked which daemons are actually down rather than everything being
|
|
73
|
+
# started blindly, so a healthy start does nothing; `|| true` because a daemon that will
|
|
74
|
+
# not come up is still not a reason to fail the project's start — the 502 says the rest.
|
|
75
|
+
- exec: supervisorctl status webextradaemons:* 2>/dev/null | grep -v RUNNING | awk '{print $1}' | xargs -r supervisorctl start || true
|
|
76
|
+
database:
|
|
77
|
+
type: mariadb
|
|
78
|
+
version: "10.11"
|
|
79
|
+
use_dns_when_possible: true
|
|
80
|
+
composer_version: "2"
|
|
81
|
+
web_environment: []
|
|
82
|
+
# The workspace packages are Yarn Berry: 63 of them carry `packageManager: yarn@4.9.3`, and yarn
|
|
83
|
+
# refuses to run their scripts under the 1.22 shim without corepack. This container is where a
|
|
84
|
+
# PACKAGE's checks run — a product, a module or a theme has no DDEV project of its own — so the
|
|
85
|
+
# checks verb cannot work here without it.
|
|
86
|
+
corepack_enable: true
|
|
87
|
+
omit_containers: [db]
|
|
88
|
+
nodejs_version: "24"
|
|
89
|
+
webimage_extra_packages: [screen]
|
|
90
|
+
web_extra_daemons:
|
|
91
|
+
- name: "workspace-app"
|
|
92
|
+
# `sg docker` runs the app with the container's "docker" group (GID matched
|
|
93
|
+
# to the host's in the Dockerfile) actually ACTIVE — supervisord launches
|
|
94
|
+
# daemons without initgroups(), so group membership listed in /etc/group
|
|
95
|
+
# alone never applies, and DDEV's start scripts reset any primary-GID
|
|
96
|
+
# change made at image build time. The ddev binary refuses to run as root,
|
|
97
|
+
# so sudo is not an option here.
|
|
98
|
+
command: "sg docker -c 'npm install && npm start'"
|
|
99
|
+
directory: /var/www/html
|
|
100
|
+
# The Web IDE: VS Code in the browser, at https://ide.workspace.ddev.site.
|
|
101
|
+
#
|
|
102
|
+
# Bound to LOOPBACK on purpose — the only way in is the ide.* vhost in
|
|
103
|
+
# .ddev/nginx_full/nginx-site.conf, so it is reachable exactly where the dashboard is and
|
|
104
|
+
# nowhere else. `--auth none` because the dashboard itself has no login: adding a second
|
|
105
|
+
# password in front of one door of an unauthenticated tool would be theatre, and the
|
|
106
|
+
# dashboard already offers a browser terminal at /terminal/<session>. If the hub is ever
|
|
107
|
+
# put on a public domain, BOTH need real auth in front of them — see the README.
|
|
108
|
+
#
|
|
109
|
+
# Its state lives under the workspace tree (gitignored) rather than in the container, so
|
|
110
|
+
# settings, keybindings and installed extensions survive an image rebuild.
|
|
111
|
+
- name: "code-server"
|
|
112
|
+
# The flags live in the script, which also seeds default settings on a machine that
|
|
113
|
+
# has none — including turning Workspace Trust off, without which the terminal
|
|
114
|
+
# refuses to start until a prompt is answered for every folder.
|
|
115
|
+
command: "bash scripts/code-server-start.sh"
|
|
116
|
+
directory: /var/www/html
|
|
117
|
+
|
|
118
|
+
# Key features of DDEV's config.yaml:
|
|
119
|
+
|
|
120
|
+
# name: <projectname> # Name of the project, automatically provides
|
|
121
|
+
# http://projectname.ddev.site and https://projectname.ddev.site
|
|
122
|
+
# If the name is omitted, the project will take the name of the enclosing directory,
|
|
123
|
+
# which is useful if you want to have a copy of the project side by side with this one.
|
|
124
|
+
|
|
125
|
+
# type: <projecttype> # backdrop, cakephp, craftcms, drupal, drupal6, drupal7, drupal8, drupal9, drupal10, drupal11, generic, laravel, magento, magento2, php, shopware6, silverstripe, symfony, typo3, wordpress
|
|
126
|
+
# See https://ddev.readthedocs.io/en/stable/users/quickstart/ for more
|
|
127
|
+
# information on the different project types
|
|
128
|
+
|
|
129
|
+
# docroot: <relative_path> # Relative path to the directory containing index.php.
|
|
130
|
+
|
|
131
|
+
# php_version: "8.3" # PHP version to use, "5.6" through "8.4"
|
|
132
|
+
|
|
133
|
+
# You can explicitly specify the webimage but this
|
|
134
|
+
# is not recommended, as the images are often closely tied to DDEV's' behavior,
|
|
135
|
+
# so this can break upgrades.
|
|
136
|
+
|
|
137
|
+
# webimage: <docker_image> # nginx/php docker image.
|
|
138
|
+
|
|
139
|
+
# database:
|
|
140
|
+
# type: <dbtype> # mysql, mariadb, postgres
|
|
141
|
+
# version: <version> # database version, like "10.11" or "8.0"
|
|
142
|
+
# MariaDB versions can be 5.5-10.8, 10.11, 11.4, 11.8
|
|
143
|
+
# MySQL versions can be 5.5-8.0, 8.4
|
|
144
|
+
# PostgreSQL versions can be 9-17
|
|
145
|
+
|
|
146
|
+
# router_http_port: <port> # Port to be used for http (defaults to global configuration, usually 80)
|
|
147
|
+
# router_https_port: <port> # Port for https (defaults to global configuration, usually 443)
|
|
148
|
+
|
|
149
|
+
# xdebug_enabled: false # Set to true to enable Xdebug and "ddev start" or "ddev restart"
|
|
150
|
+
# Note that for most people the commands
|
|
151
|
+
# "ddev xdebug" to enable Xdebug and "ddev xdebug off" to disable it work better,
|
|
152
|
+
# as leaving Xdebug enabled all the time is a big performance hit.
|
|
153
|
+
|
|
154
|
+
# xhgui_https_port: 8142
|
|
155
|
+
# Can be used to change the router https port for xhgui application
|
|
156
|
+
# Very rarely used
|
|
157
|
+
|
|
158
|
+
# xhgui_http_port: 8143
|
|
159
|
+
# Can be used to change the router http port for xhgui application
|
|
160
|
+
# Very rarely used
|
|
161
|
+
|
|
162
|
+
# host_xhgui_port: 8142
|
|
163
|
+
# Can be used to change the host binding port of the xhgui
|
|
164
|
+
# application. Rarely used; only when port conflict and
|
|
165
|
+
# bind_all_ports is used (normally with router disabled)
|
|
166
|
+
|
|
167
|
+
# xhprof_enabled: false # Set to true to enable Xhprof and "ddev start" or "ddev restart"
|
|
168
|
+
# Note that for most people the commands
|
|
169
|
+
# "ddev xhprof" to enable Xhprof and "ddev xhprof off" to disable it work better,
|
|
170
|
+
# as leaving Xhprof enabled all the time is a big performance hit.
|
|
171
|
+
|
|
172
|
+
# xhprof_mode: [prepend|xhgui|global]
|
|
173
|
+
# Set to "xhgui" to enable XHGui features
|
|
174
|
+
# "xhgui" will become default in a future major release
|
|
175
|
+
|
|
176
|
+
# webserver_type: nginx-fpm, apache-fpm, generic
|
|
177
|
+
|
|
178
|
+
# timezone: Europe/Berlin
|
|
179
|
+
# If timezone is unset, DDEV will attempt to derive it from the host system timezone
|
|
180
|
+
# using the $TZ environment variable or the /etc/localtime symlink.
|
|
181
|
+
# This is the timezone used in the containers and by PHP;
|
|
182
|
+
# it can be set to any valid timezone,
|
|
183
|
+
# see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
|
184
|
+
# For example Europe/Dublin or MST7MDT
|
|
185
|
+
|
|
186
|
+
# composer_root: <relative_path>
|
|
187
|
+
# Relative path to the Composer root directory from the project root. This is
|
|
188
|
+
# the directory which contains the composer.json and where all Composer related
|
|
189
|
+
# commands are executed.
|
|
190
|
+
|
|
191
|
+
# composer_version: "2"
|
|
192
|
+
# You can set it to "" or "2" (default) for Composer v2 or "1" for Composer v1
|
|
193
|
+
# to use the latest major version available at the time your container is built.
|
|
194
|
+
# It is also possible to use each other Composer version channel. This includes:
|
|
195
|
+
# - 2.2 (latest Composer LTS version)
|
|
196
|
+
# - stable
|
|
197
|
+
# - preview
|
|
198
|
+
# - snapshot
|
|
199
|
+
# Alternatively, an explicit Composer version may be specified, for example "2.2.18".
|
|
200
|
+
# To reinstall Composer after the image was built, run "ddev debug rebuild".
|
|
201
|
+
|
|
202
|
+
# nodejs_version: "22"
|
|
203
|
+
# change from the default system Node.js version to any other version.
|
|
204
|
+
# See https://ddev.readthedocs.io/en/stable/users/configuration/config/#nodejs_version for more information
|
|
205
|
+
# and https://www.npmjs.com/package/n#specifying-nodejs-versions for the full documentation,
|
|
206
|
+
# Note that using of 'ddev nvm' is discouraged because "nodejs_version" is much easier to use,
|
|
207
|
+
# can specify any version, and is more robust than using 'nvm'.
|
|
208
|
+
|
|
209
|
+
# corepack_enable: false
|
|
210
|
+
# Change to 'true' to 'corepack enable' and gain access to latest versions of yarn/pnpm
|
|
211
|
+
|
|
212
|
+
# additional_hostnames:
|
|
213
|
+
# - somename
|
|
214
|
+
# - someothername
|
|
215
|
+
# would provide http and https URLs for "somename.ddev.site"
|
|
216
|
+
# and "someothername.ddev.site".
|
|
217
|
+
|
|
218
|
+
# additional_fqdns:
|
|
219
|
+
# - example.com
|
|
220
|
+
# - sub1.example.com
|
|
221
|
+
# would provide http and https URLs for "example.com" and "sub1.example.com"
|
|
222
|
+
# Please take care with this because it can cause great confusion.
|
|
223
|
+
|
|
224
|
+
# upload_dirs: "custom/upload/dir"
|
|
225
|
+
#
|
|
226
|
+
# upload_dirs:
|
|
227
|
+
# - custom/upload/dir
|
|
228
|
+
# - ../private
|
|
229
|
+
#
|
|
230
|
+
# would set the destination paths for ddev import-files to <docroot>/custom/upload/dir
|
|
231
|
+
# When Mutagen is enabled this path is bind-mounted so that all the files
|
|
232
|
+
# in the upload_dirs don't have to be synced into Mutagen.
|
|
233
|
+
|
|
234
|
+
# disable_upload_dirs_warning: false
|
|
235
|
+
# If true, turns off the normal warning that says
|
|
236
|
+
# "You have Mutagen enabled and your 'php' project type doesn't have upload_dirs set"
|
|
237
|
+
|
|
238
|
+
# ddev_version_constraint: ""
|
|
239
|
+
# Example:
|
|
240
|
+
# ddev_version_constraint: ">= 1.22.4"
|
|
241
|
+
# This will enforce that the running ddev version is within this constraint.
|
|
242
|
+
# See https://github.com/Masterminds/semver#checking-version-constraints for
|
|
243
|
+
# supported constraint formats
|
|
244
|
+
|
|
245
|
+
# working_dir:
|
|
246
|
+
# web: /var/www/html
|
|
247
|
+
# db: /home
|
|
248
|
+
# would set the default working directory for the web and db services.
|
|
249
|
+
# These values specify the destination directory for ddev ssh and the
|
|
250
|
+
# directory in which commands passed into ddev exec are run.
|
|
251
|
+
|
|
252
|
+
# omit_containers: [db, ddev-ssh-agent]
|
|
253
|
+
# Currently only these containers are supported. Some containers can also be
|
|
254
|
+
# omitted globally in the ~/.ddev/global_config.yaml. Note that if you omit
|
|
255
|
+
# the "db" container, several standard features of DDEV that access the
|
|
256
|
+
# database container will be unusable. In the global configuration it is also
|
|
257
|
+
# possible to omit ddev-router, but not here.
|
|
258
|
+
|
|
259
|
+
# performance_mode: "global"
|
|
260
|
+
# DDEV offers performance optimization strategies to improve the filesystem
|
|
261
|
+
# performance depending on your host system. Should be configured globally.
|
|
262
|
+
#
|
|
263
|
+
# If set, will override the global config. Possible values are:
|
|
264
|
+
# - "global": uses the value from the global config.
|
|
265
|
+
# - "none": disables performance optimization for this project.
|
|
266
|
+
# - "mutagen": enables Mutagen for this project.
|
|
267
|
+
# - "nfs": enables NFS for this project.
|
|
268
|
+
#
|
|
269
|
+
# See https://ddev.readthedocs.io/en/stable/users/install/performance/#nfs
|
|
270
|
+
# See https://ddev.readthedocs.io/en/stable/users/install/performance/#mutagen
|
|
271
|
+
|
|
272
|
+
# fail_on_hook_fail: False
|
|
273
|
+
# Decide whether 'ddev start' should be interrupted by a failing hook
|
|
274
|
+
|
|
275
|
+
# host_https_port: "59002"
|
|
276
|
+
# The host port binding for https can be explicitly specified. It is
|
|
277
|
+
# dynamic unless otherwise specified.
|
|
278
|
+
# This is not used by most people, most people use the *router* instead
|
|
279
|
+
# of the localhost port.
|
|
280
|
+
|
|
281
|
+
# host_webserver_port: "59001"
|
|
282
|
+
# The host port binding for the ddev-webserver can be explicitly specified. It is
|
|
283
|
+
# dynamic unless otherwise specified.
|
|
284
|
+
# This is not used by most people, most people use the *router* instead
|
|
285
|
+
# of the localhost port.
|
|
286
|
+
|
|
287
|
+
# host_db_port: "59002"
|
|
288
|
+
# The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic
|
|
289
|
+
# unless explicitly specified.
|
|
290
|
+
|
|
291
|
+
# mailpit_http_port: "8025"
|
|
292
|
+
# mailpit_https_port: "8026"
|
|
293
|
+
# The Mailpit ports can be changed from the default 8025 and 8026
|
|
294
|
+
|
|
295
|
+
# host_mailpit_port: "8025"
|
|
296
|
+
# The mailpit port is not normally bound on the host at all, instead being routed
|
|
297
|
+
# through ddev-router, but it can be bound directly to localhost if specified here.
|
|
298
|
+
|
|
299
|
+
# webimage_extra_packages: [php7.4-tidy, php-bcmath]
|
|
300
|
+
# Extra Debian packages that are needed in the webimage can be added here
|
|
301
|
+
|
|
302
|
+
# dbimage_extra_packages: [telnet,netcat]
|
|
303
|
+
# Extra Debian packages that are needed in the dbimage can be added here
|
|
304
|
+
|
|
305
|
+
# use_dns_when_possible: true
|
|
306
|
+
# If the host has internet access and the domain configured can
|
|
307
|
+
# successfully be looked up, DNS will be used for hostname resolution
|
|
308
|
+
# instead of editing /etc/hosts
|
|
309
|
+
# Defaults to true
|
|
310
|
+
|
|
311
|
+
# project_tld: ddev.site
|
|
312
|
+
# The top-level domain used for project URLs
|
|
313
|
+
# The default "ddev.site" allows DNS lookup via a wildcard
|
|
314
|
+
# If you prefer you can change this to "ddev.local" to preserve
|
|
315
|
+
# pre-v1.9 behavior.
|
|
316
|
+
|
|
317
|
+
# ngrok_args: --basic-auth username:pass1234
|
|
318
|
+
# Provide extra flags to the "ngrok http" command, see
|
|
319
|
+
# https://ngrok.com/docs/agent/config/v3/#agent-configuration or run "ngrok http -h"
|
|
320
|
+
|
|
321
|
+
# disable_settings_management: false
|
|
322
|
+
# If true, DDEV will not create CMS-specific settings files like
|
|
323
|
+
# Drupal's settings.php/settings.ddev.php or TYPO3's additional.php
|
|
324
|
+
# In this case the user must provide all such settings.
|
|
325
|
+
|
|
326
|
+
# You can inject environment variables into the web container with:
|
|
327
|
+
# web_environment:
|
|
328
|
+
# - SOMEENV=somevalue
|
|
329
|
+
# - SOMEOTHERENV=someothervalue
|
|
330
|
+
|
|
331
|
+
# no_project_mount: false
|
|
332
|
+
# (Experimental) If true, DDEV will not mount the project into the web container;
|
|
333
|
+
# the user is responsible for mounting it manually or via a script.
|
|
334
|
+
# This is to enable experimentation with alternate file mounting strategies.
|
|
335
|
+
# For advanced users only!
|
|
336
|
+
|
|
337
|
+
# bind_all_interfaces: false
|
|
338
|
+
# If true, host ports will be bound on all network interfaces,
|
|
339
|
+
# not the localhost interface only. This means that ports
|
|
340
|
+
# will be available on the local network if the host firewall
|
|
341
|
+
# allows it.
|
|
342
|
+
|
|
343
|
+
# default_container_timeout: 120
|
|
344
|
+
# The default time that DDEV waits for all containers to become ready can be increased from
|
|
345
|
+
# the default 120. This helps in importing huge databases, for example.
|
|
346
|
+
|
|
347
|
+
#web_extra_exposed_ports:
|
|
348
|
+
#- name: nodejs
|
|
349
|
+
# container_port: 3000
|
|
350
|
+
# http_port: 2999
|
|
351
|
+
# https_port: 3000
|
|
352
|
+
#- name: something
|
|
353
|
+
# container_port: 4000
|
|
354
|
+
# https_port: 4000
|
|
355
|
+
# http_port: 3999
|
|
356
|
+
# Allows a set of extra ports to be exposed via ddev-router
|
|
357
|
+
# Fill in all three fields even if you don’t intend to use the https_port!
|
|
358
|
+
# If you don’t add https_port, then it defaults to 0 and ddev-router will fail to start.
|
|
359
|
+
#
|
|
360
|
+
# The port behavior on the ddev-webserver must be arranged separately, for example
|
|
361
|
+
# using web_extra_daemons.
|
|
362
|
+
# For example, with a web app on port 3000 inside the container, this config would
|
|
363
|
+
# expose that web app on https://<project>.ddev.site:9999 and http://<project>.ddev.site:9998
|
|
364
|
+
# web_extra_exposed_ports:
|
|
365
|
+
# - name: myapp
|
|
366
|
+
# container_port: 3000
|
|
367
|
+
# http_port: 9998
|
|
368
|
+
# https_port: 9999
|
|
369
|
+
|
|
370
|
+
#web_extra_daemons:
|
|
371
|
+
#- name: "http-1"
|
|
372
|
+
# command: "/var/www/html/node_modules/.bin/http-server -p 3000"
|
|
373
|
+
# directory: /var/www/html
|
|
374
|
+
#- name: "http-2"
|
|
375
|
+
# command: "/var/www/html/node_modules/.bin/http-server /var/www/html/sub -p 3000"
|
|
376
|
+
# directory: /var/www/html
|
|
377
|
+
|
|
378
|
+
# override_config: false
|
|
379
|
+
# By default, config.*.yaml files are *merged* into the configuration
|
|
380
|
+
# But this means that some things can't be overridden
|
|
381
|
+
# For example, if you have 'use_dns_when_possible: true'' you can't override it with a merge
|
|
382
|
+
# and you can't erase existing hooks or all environment variables.
|
|
383
|
+
# However, with "override_config: true" in a particular config.*.yaml file,
|
|
384
|
+
# 'use_dns_when_possible: false' can override the existing values, and
|
|
385
|
+
# hooks:
|
|
386
|
+
# post-start: []
|
|
387
|
+
# or
|
|
388
|
+
# web_environment: []
|
|
389
|
+
# or
|
|
390
|
+
# additional_hostnames: []
|
|
391
|
+
# can have their intended affect. 'override_config' affects only behavior of the
|
|
392
|
+
# config.*.yaml file it exists in.
|
|
393
|
+
|
|
394
|
+
# Many DDEV commands can be extended to run tasks before or after the
|
|
395
|
+
# DDEV command is executed, for example "post-start", "post-import-db",
|
|
396
|
+
# "pre-composer", "post-composer"
|
|
397
|
+
# See https://ddev.readthedocs.io/en/stable/users/extend/custom-commands/ for more
|
|
398
|
+
# information on the commands that can be extended and the tasks you can define
|
|
399
|
+
# for them. Example:
|
|
400
|
+
#hooks:
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
services:
|
|
2
|
+
web:
|
|
3
|
+
# Docker-outside-of-Docker needs this process to be in the host's docker
|
|
4
|
+
# group, and DDEV pins the container to `user: 1000:1000` — which overrides
|
|
5
|
+
# whatever the Dockerfile did to /etc/passwd, so a build-time `usermod -g`
|
|
6
|
+
# never reaches the running process. group_add is granted by the kernel at
|
|
7
|
+
# container start, so it is in the process credentials before supervisord
|
|
8
|
+
# starts and is inherited by every daemon it spawns.
|
|
9
|
+
#
|
|
10
|
+
# The number is this machine's docker GID, so it is written by
|
|
11
|
+
# core/scripts/docker-gid.sh — install.sh runs it during setup and
|
|
12
|
+
# sync-tooling.sh runs it after mirroring, because this file is mirrored.
|
|
13
|
+
group_add:
|
|
14
|
+
- "999"
|
|
15
|
+
volumes:
|
|
16
|
+
# Docker-outside-of-Docker: talk to the host's real docker daemon so
|
|
17
|
+
# `ddev`/bash cmd-*.sh scripts run from inside this container manage
|
|
18
|
+
# sibling ddev projects exactly like they would on the host.
|
|
19
|
+
- /var/run/docker.sock:/var/run/docker.sock
|
|
20
|
+
# DDEV's project registry. Without it the `ddev` in here has its own empty
|
|
21
|
+
# ~/.ddev and knows only the project it is standing in — so `ddev list`
|
|
22
|
+
# returns 1 project instead of 12, and the dashboard reports every other
|
|
23
|
+
# project as Stopped no matter what it is really doing. The daemon is the
|
|
24
|
+
# host's; the registry that says where the projects live has to be too.
|
|
25
|
+
# Safe to share because the tree is bind-mounted at the SAME absolute path,
|
|
26
|
+
# so every approot in it resolves identically on both sides.
|
|
27
|
+
- ${HOME}/.ddev:${HOME}/.ddev
|
|
28
|
+
# Bind the whole workspace tree at the SAME absolute path the host
|
|
29
|
+
# uses, so WORKSPACE_ROOT and every cmd-*.sh script's
|
|
30
|
+
# references resolve identically whether run on the host or in here.
|
|
31
|
+
# ${HOME} is interpolated on the HOST when ddev invokes docker compose.
|
|
32
|
+
- ${HOME}/workspace:${HOME}/workspace
|
|
33
|
+
# Claude Code auth/config for the AI assistant chat.
|
|
34
|
+
- ${HOME}/.claude:${HOME}/.claude
|
|
35
|
+
- ${HOME}/.claude.json:${HOME}/.claude.json
|
|
36
|
+
# gh's auth, for reading and fetching from the private dev-ai-agents repo.
|
|
37
|
+
- ${HOME}/.config/gh:${HOME}/.config/gh
|
|
38
|
+
environment:
|
|
39
|
+
- WORKSPACE_ROOT=${HOME}/workspace
|
|
40
|
+
- WORKSPACE_PATH=${HOME}/workspace/core
|
|
41
|
+
- WORKSPACE_SCRIPTS=${HOME}/workspace/core/scripts
|
|
42
|
+
- WORKSPACE_CONFIG=${HOME}/workspace/core/config
|
|
43
|
+
# Without this, the `ddev` binary can't find its global config/project
|
|
44
|
+
# registry and fails with "Could not connect to a Docker provider".
|
|
45
|
+
- HOME=${HOME}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# The Teamwork Graph CLI, shared FROM THE HOST instead of copied into the image:
|
|
2
|
+
# one binary, one OAuth session. Copying the config once split the rotating
|
|
3
|
+
# refresh token between two installations and each invalidated the other —
|
|
4
|
+
# mounting keeps a single owner, `twg login` on the host reaches the container
|
|
5
|
+
# instantly, and both survive image rebuilds.
|
|
6
|
+
#
|
|
7
|
+
# The BIN DIRECTORY is mounted, not the twg file itself, and that is the whole
|
|
8
|
+
# point of this shape. A single-file bind mount binds an INODE: `twg update`
|
|
9
|
+
# on the host writes a new file, the container keeps pointing at the old one,
|
|
10
|
+
# and the dashboard goes on running a version the server has stopped accepting
|
|
11
|
+
# — visible only as "Update required" inside a workitems list, with nothing
|
|
12
|
+
# saying the host binary was already current. Mounting the directory means the
|
|
13
|
+
# container resolves the name on every call, so an update is live immediately.
|
|
14
|
+
#
|
|
15
|
+
# /usr/local/bin/twg in the image is a wrapper that execs this (see
|
|
16
|
+
# .ddev/web-build/Dockerfile.workspace-app), so PATH still finds `twg` and a
|
|
17
|
+
# machine with no twg installed simply has nothing at the far end — which the
|
|
18
|
+
# dashboard's availability gate reports as absent. This also removes an old
|
|
19
|
+
# footgun: Docker CREATES a missing bind source, so the previous file mount
|
|
20
|
+
# made a root-owned DIRECTORY at ~/.local/bin/twg on a machine without twg,
|
|
21
|
+
# which then blocked installing it there.
|
|
22
|
+
services:
|
|
23
|
+
web:
|
|
24
|
+
volumes:
|
|
25
|
+
- "${HOME}/.local/bin:/host-local-bin:ro"
|
|
26
|
+
- "${HOME}/.config/twg:/home/${USER}/.config/twg:rw"
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# The upsun CLI session, shared FROM THE HOST like the twg one: one login, token
|
|
2
|
+
# refreshes land on the host, rebuilds keep it. This is what turns the Upsun
|
|
3
|
+
# branch-and-data commands from shown-to-copy into runnable dashboard actions.
|
|
4
|
+
# A machine without a session mounts an empty dir and the actions say so.
|
|
5
|
+
services:
|
|
6
|
+
web:
|
|
7
|
+
volumes:
|
|
8
|
+
- "${HOME}/.upsun-cli:/home/${USER}/.upsun-cli:rw"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Screen sessions live on the machine, not in here — so `screen -r` in a real
|
|
2
|
+
# terminal reaches them and a browser an agent opens is a window on the desktop.
|
|
3
|
+
# The dashboard still has to list and attach them, and the host is unreachable
|
|
4
|
+
# over the network (ufw drops the docker bridges), so it goes through the
|
|
5
|
+
# sockets screen itself uses. Same screen version, same user, same default
|
|
6
|
+
# socket directory, so `screen -ls` and `screen -x` work straight across.
|
|
7
|
+
services:
|
|
8
|
+
web:
|
|
9
|
+
# screen's attach hands a pty over the socket and then signals the session
|
|
10
|
+
# process — so the client has to be able to name that process. Sharing the
|
|
11
|
+
# machine's pid namespace is what makes `screen -x` work from in here; the
|
|
12
|
+
# app runs as the same user, so it can reach nothing that user could not.
|
|
13
|
+
pid: "host"
|
|
14
|
+
volumes:
|
|
15
|
+
- "/run/screen:/run/screen"
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# The Node/Express-style app runs inside THIS container (web_extra_daemon).
|
|
2
|
+
# Three vhost tiers:
|
|
3
|
+
# 1. <project>.<workspace>.workspace.ddev.site — cosmetic hierarchical
|
|
4
|
+
# alias for a project's own site: proxied straight to the ddev-router
|
|
5
|
+
# with the Host rewritten to <project>.ddev.site.
|
|
6
|
+
# 2. <workspace>.workspace.ddev.site — that workspace's dashboard page
|
|
7
|
+
# (the Node app maps the host to the workspace).
|
|
8
|
+
# 3. workspace.ddev.site — the dashboard home.
|
|
9
|
+
|
|
10
|
+
# $connection_upgrade: "upgrade" while a request is upgrading, "close" otherwise. A
|
|
11
|
+
# websocket proxy needs it; a plain `Connection upgrade` on every request breaks keepalive.
|
|
12
|
+
map $http_upgrade $connection_upgrade {
|
|
13
|
+
default upgrade;
|
|
14
|
+
'' close;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
# Tier 0: the Web IDE — code-server (VS Code in the browser) on its OWN hostname.
|
|
18
|
+
#
|
|
19
|
+
# A hostname and not a subpath: code-server is a single-page app that builds absolute
|
|
20
|
+
# URLs for its workers, its websocket and its static assets, and serving it under /ide/
|
|
21
|
+
# means rewriting all of them. Upstream's own guidance is a dedicated (sub)domain, and it
|
|
22
|
+
# costs nothing here — `*.workspace` is already in additional_hostnames, so DDEV's router
|
|
23
|
+
# routes ide.workspace.ddev.site and its certificate already covers it.
|
|
24
|
+
#
|
|
25
|
+
# An EXACT server_name, so it wins over the regex block below (nginx prefers an exact
|
|
26
|
+
# match to a regex however they are ordered) — otherwise these requests would go to the
|
|
27
|
+
# Node dashboard, which knows nothing about them.
|
|
28
|
+
server {
|
|
29
|
+
listen 80;
|
|
30
|
+
listen 443 ssl;
|
|
31
|
+
server_name ide.workspace.ddev.site;
|
|
32
|
+
|
|
33
|
+
ssl_certificate /etc/ssl/certs/master.crt;
|
|
34
|
+
ssl_certificate_key /etc/ssl/certs/master.key;
|
|
35
|
+
|
|
36
|
+
# An IDE moves whole directories and opens large files.
|
|
37
|
+
client_max_body_size 0;
|
|
38
|
+
|
|
39
|
+
location / {
|
|
40
|
+
proxy_pass http://127.0.0.1:8443;
|
|
41
|
+
proxy_http_version 1.1;
|
|
42
|
+
proxy_set_header Host $host;
|
|
43
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
44
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
45
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
46
|
+
# The terminal, the extension host and the file watcher are all websockets.
|
|
47
|
+
# Without these the editor loads and then hangs with "reconnecting…".
|
|
48
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
49
|
+
proxy_set_header Connection $connection_upgrade;
|
|
50
|
+
# A build, a composer install or a long terminal command must not be cut off
|
|
51
|
+
# mid-stream by a proxy read timeout.
|
|
52
|
+
proxy_read_timeout 86400s;
|
|
53
|
+
proxy_send_timeout 86400s;
|
|
54
|
+
proxy_buffering off;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
# Tier 1: project passthrough (two labels before workspace.)
|
|
59
|
+
server {
|
|
60
|
+
listen 80;
|
|
61
|
+
listen 443 ssl;
|
|
62
|
+
server_name ~^(?<proj>[a-z0-9-]+)\.(?<ws>[a-z0-9_-]+)\.workspace\.ddev\.site$;
|
|
63
|
+
|
|
64
|
+
ssl_certificate /etc/ssl/certs/master.crt;
|
|
65
|
+
ssl_certificate_key /etc/ssl/certs/master.key;
|
|
66
|
+
|
|
67
|
+
# Resolve ddev-router at REQUEST time, not at startup: nginx resolves a
|
|
68
|
+
# literal upstream host when it loads the config and refuses to start if
|
|
69
|
+
# it cannot ("host not found in upstream"). On a cold Docker the router
|
|
70
|
+
# does not exist yet -- ddev only starts it after this container is
|
|
71
|
+
# healthy -- so a literal name deadlocks `ddev start`. A variable in
|
|
72
|
+
# proxy_pass defers the lookup to Docker's embedded DNS per request.
|
|
73
|
+
resolver 127.0.0.11 valid=10s ipv6=off;
|
|
74
|
+
set $ddev_router ddev-router;
|
|
75
|
+
|
|
76
|
+
location / {
|
|
77
|
+
# Resolve ddev-router at request time via Docker DNS — a literal
|
|
78
|
+
# upstream is resolved at config load and kills nginx on cold start,
|
|
79
|
+
# when ddev only launches the router after this container is healthy.
|
|
80
|
+
resolver 127.0.0.11 valid=10s;
|
|
81
|
+
set $ddev_router http://ddev-router:80;
|
|
82
|
+
proxy_pass $ddev_router;
|
|
83
|
+
proxy_http_version 1.1;
|
|
84
|
+
proxy_set_header Host $proj.ddev.site;
|
|
85
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
86
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
87
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
88
|
+
proxy_redirect ~^https?://([a-z0-9-]+)\.ddev\.site(/.*)$ $scheme://$proj.$ws.workspace.ddev.site$2;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
# Tiers 2+3: the dashboard app (Node maps <ws>.workspace hosts itself)
|
|
93
|
+
server {
|
|
94
|
+
listen 80 default_server;
|
|
95
|
+
listen 443 ssl default_server;
|
|
96
|
+
|
|
97
|
+
server_name workspace.ddev.site ~^[a-z0-9_-]+\.workspace\.ddev\.site$;
|
|
98
|
+
|
|
99
|
+
ssl_certificate /etc/ssl/certs/master.crt;
|
|
100
|
+
ssl_certificate_key /etc/ssl/certs/master.key;
|
|
101
|
+
|
|
102
|
+
include /etc/nginx/monitoring.conf;
|
|
103
|
+
|
|
104
|
+
location / {
|
|
105
|
+
proxy_pass http://127.0.0.1:3000;
|
|
106
|
+
proxy_http_version 1.1;
|
|
107
|
+
proxy_set_header Host $host;
|
|
108
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
109
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
110
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
111
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
112
|
+
proxy_set_header Connection "upgrade";
|
|
113
|
+
}
|
|
114
|
+
}
|