mirror of
https://github.com/HeyPuter/builder.git
synced 2026-11-13 18:33:58 -10:00
* fallback logic * Fix preview host races from review - The host the preview is on is read from the address the frame loaded, never from a check's answer, so a late check can't move the Share link, hidden tests or error mapping off the host on screen. - A refresh takes over the early clear before its host check, so a slow failed check no longer stops the clear and leaves the overlay up with nothing reloaded. - Opening a project points the frame at it before the check, so a badge sync or toolbar Reload during the check loads this project, not the one before, and a refresh starting meanwhile no longer cancels the load. Co-Authored-By: Claude Opus 5.5 <[email protected]> --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
158 lines
15 KiB
JSON
158 lines
15 KiB
JSON
{
|
|
"name": "builder",
|
|
"version": "1.0.0",
|
|
"description": "AI Builder For Creating Sites and Apps!",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"prebuild": "npm test",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"test": "node scripts/test-edit-matcher.mjs && node scripts/test-edit-read-errors.mjs && node scripts/test-click-to-edit.mjs && node scripts/test-badge.mjs && node scripts/test-branding.mjs && node scripts/test-upgrade-pending.mjs && node scripts/test-preview-message-trust.mjs && node scripts/test-fs-path-scoping.mjs && node scripts/test-search-files.mjs && node scripts/test-markdown-link-sanitizer.mjs && node scripts/test-publish-state.mjs && node scripts/test-publish-errors.mjs && node scripts/test-publish-analytics.mjs && node scripts/test-publish-card.mjs && node scripts/test-publish-switch-race.mjs && node scripts/test-publish-button-return.mjs && node scripts/test-publish-rollback.mjs && node scripts/test-publish-mutation-lock.mjs && node scripts/test-publish-notes.mjs && node scripts/test-publish-drain-writes.mjs && node scripts/test-chat-thumb-refresh.mjs && node scripts/test-sidebar-search-filter.mjs && node scripts/test-chat-list-entry.mjs && node scripts/test-chat-list-save-race.mjs && node scripts/test-chat-list-tabs.mjs && node scripts/test-missing-projects.mjs && node scripts/test-delete-cleanup.mjs && node scripts/test-preview-verification.mjs && node scripts/test-app-tests.mjs && node scripts/test-preview-canary.mjs && node scripts/test-preview-host.mjs && node scripts/test-early-preview-clear.mjs && node scripts/test-turn-progress.mjs && node scripts/test-build-abandoned.mjs && node scripts/test-transient-retry.mjs && node scripts/test-mobile-lifecycle.mjs && node scripts/test-ai-cost-tracking.mjs && node scripts/test-usage-limit-unblock.mjs && node scripts/test-add-credits.mjs && node scripts/test-limit-hit-call-count.mjs && node scripts/test-pwa.mjs && node scripts/test-error-tracking.mjs && node scripts/test-todo-finalize.mjs && node scripts/test-issues.mjs && node scripts/test-composer-drafts.mjs && node scripts/test-composer-handoff.mjs && node scripts/test-message-queue.mjs && node scripts/test-voice-input.mjs && node scripts/test-voice-recorder-inert.mjs && node scripts/test-worker-ownership.mjs && node scripts/test-duplicate-worker-isolation.mjs && node scripts/test-published-workers.mjs && node scripts/test-publish-site-reuse.mjs && node scripts/test-version-index-integrity.mjs && node scripts/test-tool-use-repair.mjs && node scripts/test-manifest.mjs && node scripts/test-seo.mjs && node scripts/test-ime-enter.mjs && node scripts/test-worker-tools.mjs && node scripts/test-worker-save-canary.mjs && node scripts/test-read-cap.mjs && node scripts/test-send-button-state.mjs && node scripts/test-html-escape-roundtrip.mjs && node scripts/test-code-highlight.mjs && node scripts/test-chat-switch-reset.mjs && node scripts/test-load-media-urls.mjs && node scripts/test-history-dead-link.mjs && node scripts/test-storage-guards.mjs && node scripts/test-fresh-reads.mjs && node scripts/test-composer-autoresize.mjs && node scripts/test-preview-reload.mjs && node scripts/test-blockquote-render.mjs && node scripts/test-message-links.mjs && node scripts/test-drag-highlight.mjs && node scripts/test-composer-focus-guard.mjs && node scripts/test-suggestions-scroll.mjs && node scripts/test-stale-pdf-blocks.mjs && node scripts/test-view-document.mjs && node scripts/test-view-image.mjs && node scripts/test-render-svg.mjs && node scripts/test-social-images.mjs && node scripts/test-custom-domain.mjs && node scripts/test-whats-new.mjs && node scripts/test-generated-media.mjs && node scripts/test-grid-restore-missing.mjs && node scripts/test-lightbox-chat-switch.mjs && node scripts/test-lightbox-caption.mjs && node scripts/test-media-card-size.mjs && node scripts/test-media-broken-image.mjs && node scripts/test-media-image-load.mjs && node scripts/test-media-status-quiet.mjs && node scripts/test-read-url-cache.mjs && node scripts/test-unsaved-media-download.mjs && node scripts/test-live-media-read-url.mjs && node scripts/test-image-reference-svg.mjs && node scripts/test-attachment-snapshot.mjs && node scripts/test-attachment-names.mjs && node scripts/test-extract-zip.mjs && node scripts/test-paste-intake.mjs && node scripts/test-paste-as-attachment.mjs && node scripts/test-confirm-modal-keys.mjs && node scripts/test-alert-escape.mjs && node scripts/test-toasts.mjs && node scripts/test-popover-focus-return.mjs && node scripts/test-apps-panel.mjs && node scripts/test-user-menu-element.mjs && node scripts/test-puter-dialog-clicks.mjs && node scripts/test-input-labels.mjs && node scripts/test-announce.mjs && node scripts/test-menu-keyboard-close.mjs && node scripts/test-sidebar-focus.mjs && node scripts/test-mobile-view-switch.mjs && node scripts/test-theme-radio.mjs && node scripts/test-busy-entries.mjs && node scripts/test-toolbar-a11y.mjs && node scripts/test-clarify-keys.mjs && node scripts/test-version-prune.mjs && node scripts/test-project-readme.mjs && node scripts/test-restore-safety-snapshot.mjs && node scripts/test-restore-dirty-tracking.mjs && node scripts/test-restore-prune-failure.mjs && node scripts/test-restore-readdir-failure.mjs && node scripts/test-stopped-turn-unwind.mjs && node scripts/test-restore-workers.mjs && node scripts/test-restore-concurrency.mjs && node scripts/test-tool-result-dedup.mjs && node scripts/test-click-to-edit-intake.mjs && node scripts/test-external-fetch.mjs && node scripts/test-friendly-errors.mjs && node scripts/test-thinking-preview.mjs && node scripts/test-final-reply-reveal.mjs && node scripts/test-checklist-spinner.mjs && node scripts/test-mcp.mjs && node scripts/test-profile-picture.mjs && node scripts/test-templates.mjs && node scripts/test-editor-core.mjs && node scripts/test-github-core.mjs && node scripts/test-github-sync.mjs && node scripts/test-worker-secrets.mjs && node scripts/test-worker-sender.mjs && node scripts/test-model-core.mjs && node scripts/test-compaction.mjs && node scripts/test-tool-batching.mjs && node scripts/test-suggest-after-turn.mjs && node scripts/test-model-picker.mjs && node scripts/test-keyboard-viewport.mjs && node scripts/test-starter-test.mjs && node scripts/test-speed-test.mjs && node scripts/test-experiments.mjs && node scripts/test-fast-mode.mjs && node scripts/test-build-notify.mjs",
|
|
"test:thinking": "node scripts/test-thinking-preview.mjs",
|
|
"test:fresh-reads": "node scripts/test-fresh-reads.mjs",
|
|
"test:model-core": "node scripts/test-model-core.mjs",
|
|
"test:compaction": "node scripts/test-compaction.mjs",
|
|
"test:tool-batching": "node scripts/test-tool-batching.mjs",
|
|
"test:suggest-after-turn": "node scripts/test-suggest-after-turn.mjs",
|
|
"test:model-picker": "node scripts/test-model-picker.mjs",
|
|
"test:fast-mode": "node scripts/test-fast-mode.mjs",
|
|
"test:build-notify": "node scripts/test-build-notify.mjs",
|
|
"test:final-reply": "node scripts/test-final-reply-reveal.mjs",
|
|
"test:checklist-spinner": "node scripts/test-checklist-spinner.mjs",
|
|
"test:edit": "node scripts/test-edit-matcher.mjs",
|
|
"test:edit-read-errors": "node scripts/test-edit-read-errors.mjs",
|
|
"test:click-to-edit": "node scripts/test-click-to-edit.mjs",
|
|
"test:badge": "node scripts/test-badge.mjs",
|
|
"test:upgrade-pending": "node scripts/test-upgrade-pending.mjs",
|
|
"test:preview-trust": "node scripts/test-preview-message-trust.mjs",
|
|
"test:fs-scoping": "node scripts/test-fs-path-scoping.mjs",
|
|
"test:search-files": "node scripts/test-search-files.mjs",
|
|
"test:link-sanitizer": "node scripts/test-markdown-link-sanitizer.mjs",
|
|
"test:publish-state": "node scripts/test-publish-state.mjs",
|
|
"test:publish-errors": "node scripts/test-publish-errors.mjs",
|
|
"test:publish-card": "node scripts/test-publish-card.mjs",
|
|
"test:publish-switch-race": "node scripts/test-publish-switch-race.mjs",
|
|
"test:publish-button-return": "node scripts/test-publish-button-return.mjs",
|
|
"test:publish-rollback": "node scripts/test-publish-rollback.mjs",
|
|
"test:publish-lock": "node scripts/test-publish-mutation-lock.mjs",
|
|
"test:publish-drain": "node scripts/test-publish-drain-writes.mjs",
|
|
"test:chat-thumb": "node scripts/test-chat-thumb-refresh.mjs",
|
|
"test:alert-escape": "node scripts/test-alert-escape.mjs",
|
|
"test:toasts": "node scripts/test-toasts.mjs",
|
|
"test:popover-focus": "node scripts/test-popover-focus-return.mjs",
|
|
"test:apps-panel": "node scripts/test-apps-panel.mjs",
|
|
"test:puter-dialog-clicks": "node scripts/test-puter-dialog-clicks.mjs",
|
|
"test:input-labels": "node scripts/test-input-labels.mjs",
|
|
"test:announce": "node scripts/test-announce.mjs",
|
|
"test:menu-keyboard-close": "node scripts/test-menu-keyboard-close.mjs",
|
|
"test:sidebar-focus": "node scripts/test-sidebar-focus.mjs",
|
|
"test:mobile-view-switch": "node scripts/test-mobile-view-switch.mjs",
|
|
"test:theme-radio": "node scripts/test-theme-radio.mjs",
|
|
"test:busy-entries": "node scripts/test-busy-entries.mjs",
|
|
"test:toolbar-a11y": "node scripts/test-toolbar-a11y.mjs",
|
|
"test:sidebar-search": "node scripts/test-sidebar-search-filter.mjs",
|
|
"test:chat-list-entry": "node scripts/test-chat-list-entry.mjs",
|
|
"test:chat-list-save-race": "node scripts/test-chat-list-save-race.mjs",
|
|
"test:chat-list-tabs": "node scripts/test-chat-list-tabs.mjs",
|
|
"test:missing-projects": "node scripts/test-missing-projects.mjs",
|
|
"test:delete-cleanup": "node scripts/test-delete-cleanup.mjs",
|
|
"test:preview-verify": "node scripts/test-preview-verification.mjs",
|
|
"test:app-tests": "node scripts/test-app-tests.mjs",
|
|
"test:build-abandoned": "node scripts/test-build-abandoned.mjs",
|
|
"test:turn-progress": "node scripts/test-turn-progress.mjs",
|
|
"test:early-preview-clear": "node scripts/test-early-preview-clear.mjs",
|
|
"test:preview-canary": "node scripts/test-preview-canary.mjs",
|
|
"test:preview-host": "node scripts/test-preview-host.mjs",
|
|
"test:transient-retry": "node scripts/test-transient-retry.mjs",
|
|
"test:mobile-lifecycle": "node scripts/test-mobile-lifecycle.mjs",
|
|
"test:ai-cost": "node scripts/test-ai-cost-tracking.mjs",
|
|
"test:pwa": "node scripts/test-pwa.mjs",
|
|
"test:error-tracking": "node scripts/test-error-tracking.mjs",
|
|
"test:todo-finalize": "node scripts/test-todo-finalize.mjs",
|
|
"test:issues": "node scripts/test-issues.mjs",
|
|
"test:composer-drafts": "node scripts/test-composer-drafts.mjs",
|
|
"test:composer-handoff": "node scripts/test-composer-handoff.mjs",
|
|
"test:message-queue": "node scripts/test-message-queue.mjs",
|
|
"test:worker-ownership": "node scripts/test-worker-ownership.mjs",
|
|
"test:duplicate-workers": "node scripts/test-duplicate-worker-isolation.mjs",
|
|
"test:published-workers": "node scripts/test-published-workers.mjs",
|
|
"test:publish-site-reuse": "node scripts/test-publish-site-reuse.mjs",
|
|
"test:version-index": "node scripts/test-version-index-integrity.mjs",
|
|
"test:tool-use-repair": "node scripts/test-tool-use-repair.mjs",
|
|
"test:manifest": "node scripts/test-manifest.mjs",
|
|
"test:seo": "node scripts/test-seo.mjs",
|
|
"test:ime-enter": "node scripts/test-ime-enter.mjs",
|
|
"test:worker-tools": "node scripts/test-worker-tools.mjs",
|
|
"test:worker-save": "node scripts/test-worker-save-canary.mjs",
|
|
"test:read-cap": "node scripts/test-read-cap.mjs",
|
|
"test:send-button": "node scripts/test-send-button-state.mjs",
|
|
"test:html-escape": "node scripts/test-html-escape-roundtrip.mjs",
|
|
"test:code-highlight": "node scripts/test-code-highlight.mjs",
|
|
"test:chat-switch-reset": "node scripts/test-chat-switch-reset.mjs",
|
|
"test:load-media-urls": "node scripts/test-load-media-urls.mjs",
|
|
"test:history-dead-link": "node scripts/test-history-dead-link.mjs",
|
|
"test:storage-guards": "node scripts/test-storage-guards.mjs",
|
|
"test:composer-autoresize": "node scripts/test-composer-autoresize.mjs",
|
|
"test:preview-reload": "node scripts/test-preview-reload.mjs",
|
|
"test:blockquote": "node scripts/test-blockquote-render.mjs",
|
|
"test:message-links": "node scripts/test-message-links.mjs",
|
|
"test:drag-highlight": "node scripts/test-drag-highlight.mjs && node scripts/test-composer-focus-guard.mjs && node scripts/test-suggestions-scroll.mjs",
|
|
"test:stale-pdf": "node scripts/test-stale-pdf-blocks.mjs",
|
|
"test:view-document": "node scripts/test-view-document.mjs",
|
|
"test:view-image": "node scripts/test-view-image.mjs",
|
|
"test:render-svg": "node scripts/test-render-svg.mjs",
|
|
"test:social-images": "node scripts/test-social-images.mjs",
|
|
"test:custom-domain": "node scripts/test-custom-domain.mjs",
|
|
"test:whats-new": "node scripts/test-whats-new.mjs",
|
|
"test:generated-media": "node scripts/test-generated-media.mjs",
|
|
"test:attachment-snapshot": "node scripts/test-attachment-snapshot.mjs",
|
|
"test:attachment-names": "node scripts/test-attachment-names.mjs",
|
|
"test:extract-zip": "node scripts/test-extract-zip.mjs",
|
|
"test:paste-intake": "node scripts/test-paste-intake.mjs",
|
|
"test:confirm-modal": "node scripts/test-confirm-modal-keys.mjs",
|
|
"test:clarify-keys": "node scripts/test-clarify-keys.mjs",
|
|
"test:version-prune": "node scripts/test-version-prune.mjs",
|
|
"test:project-readme": "node scripts/test-project-readme.mjs",
|
|
"test:restore-dirty": "node scripts/test-restore-dirty-tracking.mjs",
|
|
"test:restore-prune": "node scripts/test-restore-prune-failure.mjs",
|
|
"test:restore-readdir": "node scripts/test-restore-readdir-failure.mjs",
|
|
"test:stopped-turn-unwind": "node scripts/test-stopped-turn-unwind.mjs",
|
|
"test:restore-workers": "node scripts/test-restore-workers.mjs",
|
|
"test:restore-concurrency": "node scripts/test-restore-concurrency.mjs",
|
|
"test:tool-result-dedup": "node scripts/test-tool-result-dedup.mjs",
|
|
"test:click-to-edit-intake": "node scripts/test-click-to-edit-intake.mjs",
|
|
"test:external-fetch": "node scripts/test-external-fetch.mjs",
|
|
"test:friendly-errors": "node scripts/test-friendly-errors.mjs",
|
|
"test:mcp": "node scripts/test-mcp.mjs",
|
|
"test:profile-picture": "node scripts/test-profile-picture.mjs",
|
|
"test:templates": "node scripts/test-templates.mjs",
|
|
"test:editor-core": "node scripts/test-editor-core.mjs",
|
|
"test:github-core": "node scripts/test-github-core.mjs",
|
|
"test:github-sync": "node scripts/test-github-sync.mjs",
|
|
"test:worker-secrets": "node scripts/test-worker-secrets.mjs",
|
|
"test:worker-sender": "node scripts/test-worker-sender.mjs"
|
|
},
|
|
"keywords": [],
|
|
"author": "Nariman Jelveh",
|
|
"devDependencies": {
|
|
"sharp": "^0.35.3",
|
|
"vite": "^6.4.2"
|
|
},
|
|
"dependencies": {
|
|
"@codemirror/autocomplete": "6.20.3",
|
|
"@codemirror/commands": "6.11.1",
|
|
"@codemirror/lang-css": "6.3.1",
|
|
"@codemirror/lang-html": "6.4.12",
|
|
"@codemirror/lang-javascript": "6.2.5",
|
|
"@codemirror/lang-json": "6.0.2",
|
|
"@codemirror/lang-markdown": "6.5.2",
|
|
"@codemirror/language": "6.13.1",
|
|
"@codemirror/search": "6.7.2",
|
|
"@codemirror/state": "6.7.6",
|
|
"@codemirror/view": "6.43.14",
|
|
"@lezer/highlight": "1.2.5",
|
|
"@modelcontextprotocol/sdk": "^1.31.0",
|
|
"zod": "4.4.3"
|
|
}
|
|
}
|