What shipped, by day: @molecule/* package releases and molecule.dev changes. RSS
RegisterData<TExtra> and createJWTAuthClient<T, TRegister> accept an app's own registration fields (username, …) at the top level, so requestBody receives exactly the payload the form passed instead of an app casting it.@molecule/app-auth@1.5.0AuthState.status and AuthClient.validateSession() for a restored session the server has not yet confirmed, and tokenKey to store the access token under another tool's exact key.@molecule/app-auth@1.4.0@molecule/api-resource-article: the README now leads with the fact that a scaffold that lists this package already has its tables. - @molecule/api-resource-comment: the README now leads with the fact that a scaffold that lists this package already has its tables. - @molecule/api-resource-follow: the README now leads with the fact that a scaffold that lists this package already has its table. - @molecule/api-resource-reaction: the README now leads with the fact that a scaffold that lists this package already has its table.@molecule/api-resource-article@1.1.2@molecule/api-resource-comment@1.1.4@molecule/api-resource-follow@1.0.8@molecule/api-resource-reaction@1.0.5AuthClientConfig.storage states the trade-off plainly: in-memory is the secure default, and an app whose external contract requires the token at its own key opts in with storage: createBrowserStorageAdapter() plus tokenKey: 'jwtToken'.@molecule/app-auth@1.4.1list_files answers a package catalog, or any listing larger than one tool result, with its entry count and the first names plus a pointer to find_package/read_molecule_doc, instead of thousands of names.@molecule/api-ai-tools@1.9.10streamingBackgroundCommand writes the flags it adds at the end of the suite runner's own arguments — inside a subshell or a brace group, and before a trailing redirection — instead of at the end of the command text, where a flag written after a group's ) was a shell syntax error.@molecule/api-ai-tools@1.9.4Authorization header means the client never attached the token, a header means the server rejected it.@molecule/api-ai-tools@1.9.12@molecule/api-ai-tools@1.9.7timeout N prefix that was written for the foreground ceiling, and a background run stopped by its own timeout is told to drop that prefix instead of being sent to the background again.@molecule/api-ai-tools@1.9.8@molecule/api-ai-tools@1.9.6@molecule/api-ai-tools@1.9.11diff now counts the lines it actually changed, so a same-length rewrite reports its added and removed lines instead of 0/0, and a content-identical write reports type: "unchanged".@molecule/api-ai-tools@1.9.8@molecule/api-ai-tools@1.9.7@molecule/app-auth@1.5.1source-sans-3 serving the "Source Sans Pro" family — and say to wire a bond instead of npm-installing a webfont package.@molecule/app-fonts-source-sans-3@1.1.2@molecule/app-fonts@1.2.1@molecule/api-ai-tools@1.9.9@molecule/app-bond@1.0.3loader.js entry with every companion locale bond, load companion bonds on demand instead of all at once, precache only the app shell, and let bundlers drop unused UI components.@molecule/app-i18n-default-react@1.0.3@molecule/app-vite-config-default@1.1.6@molecule/app-ui-react@1.3.4@molecule/app-locales-adjustment-slider@1.0.3@molecule/app-locales-ai-chat@1.0.3@molecule/app-locales-annotation-pin@1.0.3@molecule/app-locales-announcement-bar@1.0.3@molecule/app-locales-audio-player@1.0.3@molecule/app-locales-audio-recorder@1.0.4@molecule/app-locales-auth-shell@1.0.3@molecule/app-locales-auth@1.0.3@molecule/app-locales-author-bio-card@1.0.3@molecule/app-locales-badge@1.0.3@molecule/app-locales-battery@1.0.4@molecule/app-locales-bias-indicator@1.0.3@molecule/app-locales-billing@1.0.3@molecule/app-locales-biometrics@1.0.3@molecule/app-locales-bluetooth@1.0.3@molecule/app-locales-brightness@1.0.3@molecule/app-locales-bulk-action-toolbar@1.0.3@molecule/app-locales-calendar@1.0.3@molecule/app-locales-camera@1.0.3@molecule/app-locales-canvas-engine@1.0.3@molecule/app-locales-carousel@1.0.4@molecule/app-locales-charts@1.0.3@molecule/app-locales-class-schedule@1.0.4@molecule/app-locales-clipboard@1.0.3@molecule/app-locales-code-block@1.0.3@molecule/app-locales-code-editor@1.0.3@molecule/app-locales-color-picker@1.0.3@molecule/app-locales-common@1.0.5@molecule/app-locales-contact-form@1.0.3@molecule/app-locales-contacts@1.0.3@molecule/app-locales-cookie-banner@1.0.3@molecule/app-locales-copy-link-field@1.0.3@molecule/app-locales-danger-zone@1.0.3@molecule/app-locales-day-timeline@1.0.3@molecule/app-locales-drawing-toolbar@1.0.3@molecule/app-locales-embed-snippet@1.0.3@molecule/app-locales-embeddable-chat-widget@1.0.3@molecule/app-locales-emoji-reactions@1.0.3@molecule/app-locales-exif-panel@1.0.3@molecule/app-locales-feature-animation-canvas@1.0.3@molecule/app-locales-feature-audio-effects-rack@1.0.3@molecule/app-locales-feature-audio-mixer@1.0.4@molecule/app-locales-feature-audio-waveform@1.0.3@molecule/app-locales-feature-barcode-scanner@1.0.3@molecule/app-locales-feature-canvas@1.0.3@molecule/app-locales-feature-chapter-list@1.0.4@molecule/app-locales-feature-graph-view@1.0.3@molecule/app-locales-feature-image-canvas@1.0.3@molecule/app-locales-feature-map-drawing@1.0.3@molecule/app-locales-feature-piano-roll@1.0.4@molecule/app-locales-feature-thread-tree@1.0.3@molecule/app-locales-feature-three-viewer@1.0.3@molecule/app-locales-feature-track-lane@1.0.4@molecule/app-locales-feature-transport-bar@1.0.3@molecule/app-locales-feature-video-scrubber@1.0.4@molecule/app-locales-feature-video-timeline@1.0.4@molecule/app-locales-file-card@1.0.4@molecule/app-locales-file-dropzone@1.0.3@molecule/app-locales-filesystem@1.0.3@molecule/app-locales-filter-bar@1.0.3@molecule/app-locales-flashcard-card@1.0.3@molecule/app-locales-flow-canvas@1.0.3@molecule/app-locales-footer@1.0.4@molecule/app-locales-forms@1.0.3@molecule/app-locales-geolocation@1.0.3@molecule/app-locales-gradebook@1.0.4@molecule/app-locales-habit-streak-card@1.0.3@molecule/app-locales-haptics@1.0.3@molecule/app-locales-health@1.0.4@molecule/app-locales-heatmap@1.0.4@molecule/app-locales-help-button@1.0.3@molecule/app-locales-hero-metric-card@1.0.3@molecule/app-locales-http-inspector@1.0.3@molecule/app-locales-http@1.0.3@molecule/app-locales-i18n@1.0.3@molecule/app-locales-iap@1.0.3@molecule/app-locales-icons@1.0.3@molecule/app-locales-ide@1.10.9@molecule/app-locales-inline-edit@1.0.3@molecule/app-locales-join-code@1.0.3@molecule/app-locales-keyboard@1.0.3@molecule/app-locales-layer-panel@1.0.3@molecule/app-locales-legal-default@1.0.3@molecule/app-locales-live-preview@1.0.3@molecule/app-locales-loyalty-tier-badge@1.0.4@molecule/app-locales-maps@1.0.3@molecule/app-locales-margin-notes@1.0.2@molecule/app-locales-medication-row@1.0.3@molecule/app-locales-message-bubble@1.0.3@molecule/app-locales-mind-map-canvas@1.0.3@molecule/app-locales-moderation-queue@1.0.3@molecule/app-locales-motion@1.0.3@molecule/app-locales-network@1.0.3@molecule/app-locales-newsletter-signup@1.0.3@molecule/app-locales-nfc@1.0.3@molecule/app-locales-notification-center@1.0.3@molecule/app-locales-notifications-page@1.0.4@molecule/app-locales-now-playing-bar@1.0.4@molecule/app-locales-nps-distribution@1.0.3@molecule/app-locales-oauth-buttons@1.0.3@molecule/app-locales-onboarding-modal@1.0.3@molecule/app-locales-pagination-bar@1.0.3@molecule/app-locales-password-generator@1.0.3@molecule/app-locales-password-strength-meter@1.0.3@molecule/app-locales-photo-lightbox@1.0.3@molecule/app-locales-plan-updated-page@1.0.3@molecule/app-locales-pricing-page@1.0.3@molecule/app-locales-progress-rings@1.0.3@molecule/app-locales-push@1.0.3@molecule/app-locales-qr-code@1.0.3@molecule/app-locales-quiz-card@1.0.3@molecule/app-locales-rating-form@1.0.4@molecule/app-locales-react-native-ui@1.0.4@molecule/app-locales-react-ui@1.0.3@molecule/app-locales-react@1.0.3@molecule/app-locales-reading-progress-bar@1.0.3@molecule/app-locales-reputation-badge@1.0.3@molecule/app-locales-root-error-boundary@1.0.3@molecule/app-locales-routing@1.0.3@molecule/app-locales-rule-builder@1.0.3@molecule/app-locales-screen-orientation@1.0.3@molecule/app-locales-search-autocomplete@1.0.3@molecule/app-locales-search-ui@1.0.3@molecule/app-locales-secret-row@1.0.3@molecule/app-locales-settings-actions-bar@1.0.3@molecule/app-locales-settings-panel@1.0.3@molecule/app-locales-share-link-card@1.0.3@molecule/app-locales-share@1.0.3@molecule/app-locales-social-share-buttons@1.0.3@molecule/app-locales-solid-ui@1.0.3@molecule/app-locales-solid@1.0.3@molecule/app-locales-sort-picker@1.0.3@molecule/app-locales-splash-screen@1.0.3@molecule/app-locales-spreadsheet-grid@1.0.3@molecule/app-locales-stage-timeline@1.0.3@molecule/app-locales-status-bar@1.0.3@molecule/app-locales-status-dashboard@1.0.3@molecule/app-locales-storage@1.0.3@molecule/app-locales-subscription-plan-card@1.0.3@molecule/app-locales-survey-question@1.0.3@molecule/app-locales-svelte@1.0.3@molecule/app-locales-tag-input@1.0.3@molecule/app-locales-time-slot-picker@1.0.3@molecule/app-locales-trace-waterfall@1.0.3@molecule/app-locales-ui@1.0.3@molecule/app-locales-utilities@1.0.3@molecule/app-locales-version@1.0.3@molecule/app-locales-video-call-controls@1.0.3@molecule/app-locales-video-player@1.0.3@molecule/app-locales-video@1.0.3@molecule/app-locales-vote-cluster@1.0.3@molecule/app-locales-vue@1.0.3@molecule/app-locales-whiteboard-canvas@1.0.3@molecule/app-locales-wiki-page-header@1.0.3@molecule/app-locales-word-cloud@1.0.3@molecule/api-server-default-express@1.0.4TraceArtifact.lead.@molecule/api-ai-tools@1.9.7TraceArtifact.lastAction.@molecule/api-ai-tools@1.9.10@molecule/api-ai-tools@1.9.7--host 127.0.0.1, so it answers on the address the browser requests.@molecule/api-ai-tools@1.9.5load in the same commit that mounts it, so a page that loads but never renders is reported as blank instead of leaving the preview on a loading status.@molecule/app-ide-react@1.21.2@molecule/api-ai-tools@1.9.8allTags() returns every tag in use, and GET /articles/tags with no ?limit= answers it instead of capping at the 20 most-used tags. popularTags(limit) keeps its top-20 default — now stated in its own docs, with Number.POSITIVE_INFINITY (or allTags()) as the whole-list call. A GET /tags endpoint built on the bare popularTags() default silently dropped every tag past the twentieth once a database held more than 20.@molecule/api-resource-article@1.1.0classifyRunFailure reads what a failing request hit — the transport (refused, timeout, DNS, TLS), the HTTP status, or an assertion — and the failures-by-cause note names a connection error as a re-run, not as a cause in the app's code.@molecule/api-ai-tools@1.9.0createBrowserStorageAdapter() builds a StorageAdapter over the browser's Web Storage, which is what keeps a signed-in session across a page reload when the API issues no httpOnly session cookie. Pass it as AuthClientConfig.storage; kind: 'session' narrows it to the tab's lifetime. The client's own default stays 'memory', and an httpOnly cookie session remains the stronger choice wherever the API sets one — a token in Web Storage is readable by any script on the origin. AuthClientConfig.storage's docs now say which store to pick, how to swap it, and what each costs.@molecule/app-auth@1.3.0scopedRerunCommand/rerunOfRunningSuite carry the --config a run was measured under, and a finished run whose failures are all Cannot navigate to invalid URL is reported as one configuration failure naming that config and the exact command, instead of a list of causes.@molecule/api-ai-tools@1.9.0SandboxConfig.idleAction sets the idle policy for a single sandbox, Sandbox.setIdleAction changes it in place, and SandboxProvider.defaultIdleAction reports the steady-state policy to restore afterwards.@molecule/api-code-sandbox-flyio@1.3.0@molecule/api-code-sandbox@1.4.0@molecule/api-ai-tools@1.8.0file may now be a final URL — a root-absolute asset path (/assets/…), an http(s): URL or a data: URL — and setFont() uses it as-is instead of resolving it under <basePath>fonts/, so a bundler's ?url import can serve a font without copying files.@molecule/app-fonts@1.2.0@molecule/app-fonts-source-sans-3 font provider: the current upstream Source Sans 3 variable font, self-hosted and registered under the Source Sans Pro family name, so stylesheets that ask for 'Source Sans Pro' (the RealWorld/Conduit theme among others) render without a CDN or a fontsource download.@molecule/app-fonts-source-sans-3@1.1.0trace.zip files, and hand the platform what they say: parseTraceArtifacts (with traceArtifactsScript, a dependency-free in-sandbox reader) returns each failing test's last requests with their statuses and its console errors, and failureTraceNote writes them as a bounded note — so a click that changed nothing is answered by POST /api/articles/x/favorite → 401 instead of by hand-written browser probes. diagnosisTraceCommand adds --trace=retain-on-failure to a run narrowed to a part of the suite when the config it reads records traces for no failure (suiteRecordsTraces), never to the whole-suite proof run.@molecule/api-ai-tools@1.7.0@molecule/api-resource-api-key: the setup SQL now ships at src/__setup__/api_keys.sql, the path its README states. - @molecule/api-resource-article: the README names src/__setup__/ as the directory its four setup SQL files ship in. - @molecule/api-resource-device: the setup SQL now ships at src/__setup__/devices.sql, the path its README states. - @molecule/api-resource-firmware: the README names src/__setup__/firmware.sql as the setup SQL path. - @molecule/api-resource-journal-entry: the README names src/__setup__/journal_entries.sql as the setup SQL path. - @molecule/api-resource-payment: the setup SQL now ships at src/__setup__/payments.sql, the path its README states. - @molecule/api-resource-status-page: the setup SQL now ships under src/__setup__/, the path its README states. - @molecule/api-resource-user: the setup SQL now ships at src/__setup__/users.sql and src/__setup__/usersSecrets.sql, the paths its README states.@molecule/api-resource-api-key@1.0.3@molecule/api-resource-article@1.1.1@molecule/api-resource-device@1.0.8@molecule/api-resource-firmware@1.0.4@molecule/api-resource-journal-entry@1.0.4@molecule/api-resource-payment@1.0.3@molecule/api-resource-status-page@1.0.5@molecule/api-resource-user@1.5.7@molecule/app-auth documents how to wire it by hand in a scaffolded app (createJWTAuthClient/setClient, initialize(), MoleculeProvider/useAuth()) and why a hand-rolled token store races the session restore.@molecule/app-auth@1.3.2@molecule/app-http's docs state the call shape every body-taking verb uses — post(url, data, config), put(url, data, config), patch(url, data, config): the body is the SECOND argument, never { data: body } (which sends {"data":…} as the body). A failed run's trace read now quotes the body a 4xx request sent beside the status and the response, so a wrapped body is visible in one line.@molecule/api-ai-tools@1.9.0@molecule/app-http-axios@1.0.5@molecule/app-http@1.1.4ALTER TABLE … DROP COLUMN IF EXISTS now applies on SQLite: the migrator drops the statement when the table has no such column (the no-op Postgres performs) and strips the clause SQLite cannot parse. A migration written with it used to fail the run — and an app booting on a fresh production database that never had the column could not start.@molecule/api-database-sqlite@1.2.6AuthClientConfig.storage docs name the scaffold's generated auth bond, which is where createBrowserStorageAdapter() is passed — not authConfig.@molecule/app-auth@1.3.1authorization.set() refuses to mint a session without a deviceId. The global verifyMiddleware exposes a session only when its payload carries a device id naming an active devices row, so a token signed without one was handed to the client and then answered 401 on every request, with nothing said at sign-in. It now throws, naming the missing field and the call that supplies it: get<DeviceService>('device')?.createOrUpdate(userId, deviceName), which resolves to the device id string. The sign-in sequence — device, then session — is documented on set() and in the package's module docs, with the typed calls for both steps.@molecule/api-resource-user@1.5.6createBrowserStorageAdapter now documents that a stored token and user restore the session synchronously with no request, so an app should render from that state and never block its first paint on its own profile request.@molecule/app-auth@1.3.2DeviceService is exported from the package root, so the interface a caller writes at the call site — get<DeviceService>('device') — can be imported by name rather than re-declared as an inline generic. The types namespace export is unchanged.@molecule/api-resource-device@1.0.7edit_file names every replacement of a batch that does not match the file. A batch is applied all-or-nothing, so the failure now reports each bad old_string — its position in the batch, and where it stops agreeing with the file — in one result, instead of one replacement per round trip. Nothing is written when any of them fails.@molecule/api-ai-tools@1.7.0exec_command no longer blocks on a leading sleep N while a background task can answer it: the task's state, progress and failures so far come back at once, and the start and wait notes name wait_for_task instead of a hand tail.@molecule/api-ai-tools@1.8.3exec_command results now carry exitCodeNote when a piped check's reported code belongs to the pipeline's last stage rather than the check — naming the stage and what the output carries, so tsc … | head reporting 0 beside a printed type error is no longer read as a clean run.@molecule/api-ai-tools@1.9.2exec_command's over-budget message now tells a stopped test suite to run in the background instead of advising "run a smaller unit per command" — a suite stopped at the limit reports no tally at all, so splitting its files measures nothing and leaves no word on which test or request never finished.@molecule/api-ai-tools@1.6.6failureTraceNote names a request whose response Playwright never recorded as exactly that — not as a failure — and reports a network error with its own error text; the "a click that changed nothing is usually one of these requests failing" line now appears only when a listed request really failed.@molecule/api-ai-tools@1.9.1failureTraceNote spends its bounded rows on evidence: a trace whose every request got no response no longer takes one, rows are deduplicated by the test's location, and a real 4xx/5xx or a failure an earlier walk of the suite repeated is listed before the rest.@molecule/api-ai-tools@1.9.1find_files searches the directory a pattern names instead of walking the whole search root, and a timed-out search is reported in the tool's own words — what was searched, the limit, and a narrower path to try — instead of the sandbox's timeout option.@molecule/api-ai-tools@1.6.6locatedCommandSegments reports each shell statement's offset and its own leading NAME=value words, so a caller can write an environment assignment into the statement that runs a suite instead of in front of the whole command.@molecule/api-ai-tools@1.8.1useStore(store) no longer requires a StateProvider: it subscribes to the store it is handed, so a store made by a provider package's own createStore() / createStoreWithActions() works with no state bond. useStateProvider() still throws outside a provider, and its message now names the fix — which provider to render, and the import for it.@molecule/app-react@1.6.5wait_for_task ends a wait early — and a note hands over a stop command — only for a cause that is PROVEN by a repeated error and failing the whole run. A shared duration is reported as a lead while the wait goes on, instead of ending it.@molecule/api-ai-tools@1.7.0streamingBackgroundCommand sets Playwright's inline-failure switch on the list reporter it puts a background suite on. A run that is still walking therefore carries its causes, so grep -n -A 20 '<test name>' <log> returns a failure's error while the suite is running instead of the ✘ row alone.@molecule/api-ai-tools@1.7.0| tail -5, | grep …) that sits before a trailing statement such as ; echo done, so its log keeps the run's failure list instead of only the tally.@molecule/api-ai-tools@1.9.3grep, tail, head, cut, awk, sed, …) are now dropped from its pipeline, so the log keeps every failure's own error and the reported exit code is the runner's rather than the filter's.@molecule/api-ai-tools@1.8.0status: 'cut_at_budget' instead of the pipeline's exitCode: 0 — with the bound that stopped it, how far the runner's own output shows it got, and the last line it printed — so a suite killed at a timeout behind a | tail is readable as the run that did not finish: commandRunState, cutRunFacts and cutRunSentence are the readers.@molecule/api-ai-tools@1.6.6../../fixtures/… form, which matched no tests and printed "No tests found".@molecule/api-ai-tools@1.9.3--trace=retain-on-failure now goes into the Playwright step itself, so it is still recorded when the command pipes to tail or ends in grep.@molecule/api-ai-tools@1.8.0net::ERR_* on the document request, naming the document it hit.@molecule/api-ai-tools@1.9.3<n> (Test timeout of 15000ms exceeded), and a trace read now carries the page's own actions with their start and end times.@molecule/api-ai-tools@1.9.0@molecule/api-ai-tools@1.9.3…(N earlier characters omitted)) now says the log was clipped and that its count covers only the last part, instead of calling those failures the run's failures.@molecule/api-ai-tools@1.9.3@molecule/api-ai-tools@1.9.3Expected:/Received: lines or locator, and names any cause it had to leave out with the one command that prints its body.@molecule/api-ai-tools@1.8.0HttpError naming the page server and the client's baseURL, instead of resolving with the HTML as data; getClient() warns once when it mints its no-baseURL fallback.@molecule/app-http@1.1.5@molecule/api-ai-tools@1.9.3skipAuthGate: true. That is what a request the gate itself depends on must set: a gate that waits for a session restore whose own request goes through the same client waits on itself, holding the very request it is waiting for, and every request it holds stalls until the gate times out. That bound is now 3 s (was 10 s, measured against a normal restore's one round trip) and a timeout with requests held is reported at error level naming skipAuthGate, instead of a console warning.@molecule/app-http-axios@1.0.4@molecule/app-http@1.1.3@molecule/app-http@1.1.3suiteRunPipelinePlacement reports whether a stage really follows the runner.@molecule/api-ai-tools@1.8.3exitCode: 0; detection reads the run's untruncated output.@molecule/api-ai-tools@1.8.0locatedCommandSegments, which reports each shell statement's offset and its own leading NAME=value words, so an environment assignment can be placed in the statement that runs a command.@molecule/api-ai-tools@1.8.2412 failed_precondition: machine not running is retried when Fly's own Machines API reports the Machine started, starting or replacing — the exec endpoint lagging a Machine that is up, which a single repeat clears, instead of a failed operation. A Machine reported stopped, suspended or destroyed still fails at once. isTransientExecPrecondition takes the Machine's state as an optional second argument to make that call.@molecule/api-code-sandbox-flyio@1.2.10Request is now assignable to MoleculeRequest without a cast (params accepts string | string[], as Express declares), so handlers can pass req straight to functions such as authorization.set.@molecule/api-resource@1.0.5following flag, a feed, a favorited state — cannot answer for an anonymous viewer on a connection slow enough for the restore to lose the race. @molecule/app-http and @molecule/app-http-axios await a registered gate before every request (setAuthGate / awaitAuthGate); @molecule/app-auth's client exposes whenRestored(), which resolves once the initialize() restore has settled and immediately when none is in flight; the default auth bonds register it, and an app with its own session module registers its own.@molecule/app-http-axios@1.0.3@molecule/app-auth@1.2.2@molecule/app-http@1.1.2@molecule/app-bonds-default-react@1.1.1CREATE TABLE IF NOT EXISTS now only runs for the migration file that CREATES a table, and never adds a NOT NULL column with no default. Before, a rewritten — and then deleted — older migration silently added a column to another file's table, and every insert that did not write it failed.@molecule/api-database-sqlite@1.2.6stop sequences. ChatParams.stop declares the sequences a provider must stop generating at (OpenAI-compatible stop), and the DeepSeek bond sends them, capped at the 16 its API takes. The matched text is dropped from the reply, so a caller can end a reply it would discard at the cost of the tokens written before the match instead of the whole answer.@molecule/api-ai-deepseek@1.0.10@molecule/api-ai@1.3.4authScheme guidance now names the call that takes it: setClient(createFetchClient({ baseURL, authScheme: 'Token' })), the bonded provider's createAxiosClient({ baseURL, authScheme: 'Token' }), or the auth client's createJWTAuthClient({ authScheme: 'Token' }). It is a CONSTRUCTOR option — "the client config's authScheme" read as a property of the client getClient() returns, which has no such property.@molecule/app-http-axios@1.0.4@molecule/app-auth@1.3.0@molecule/app-http@1.1.3@molecule/app-bonds-default-react@1.1.2skipAuthGate: true, or the gate holds the request it is waiting for. The shipped restore never needs it — it sends its current-user request with fetch, so the gate the default auth bonds register cannot hold it.@molecule/app-auth@1.3.0@molecule/app-bonds-default-react@1.1.2createAxiosClient takes authScheme — Bearer by default, or what the API expects, e.g. Token for an API that reads Authorization: Token <jwt>. It is the same option @molecule/app-http's HttpClientConfig already declares, so a client config written against the core works unchanged on the Axios bond the scaffold wires. createDefaultHttpClientWithAuthBearer takes authScheme too.@molecule/app-http-axios@1.0.4@molecule/app-bonds-default-react@1.1.2npx --prefix <dir> playwright test, npm exec --prefix <dir> -- playwright test, and the -p/--package/-c forms classify exactly like npx playwright test.@molecule/api-ai-tools@1.8.0flaky among the causes to fix: a test that failed once and passed on its retry is named apart, once, so a run whose only reds were retried passes does not send the executor to chase them.@molecule/api-ai-tools@1.8.3node_modules entry that is a symlink (removing it deletes the link, not its target), one inside the run's own .mol-scratch/, or one with no package.json under it can be removed, while a real install stays read-only — including through a link. installedPackageWriteRefusal takes a filesystem probe and is async; shellInstalledPackageProbe builds one from a shell runner.@molecule/api-ai-tools@1.8.3handlers.* return { statusCode, headers?, body } and never write to res, with the three lines that apply a result when a handler is called directly.@molecule/api-resource-device@1.0.6@molecule/api-resource-status-page@1.0.4@molecule/api-resource-user@1.5.5{ statusCode, headers?, body } and never writes to res, so createRequestHandler is what applies it — with the three lines to write when a handler is called directly.@molecule/api-resource@1.0.4vite preview (Vite 8 compresses HTML) loads instead of failing with net::ERR_CONTENT_DECODING_FAILED.@molecule/app-e2e-preview@1.0.10mlcl: import the packaged webfont from ./fonts/* as a bundler asset URL and pass it as the face, or copy fonts/ into the app's public/fonts/.@molecule/app-fonts-arimo@1.0.3@molecule/app-fonts-dm-sans@1.0.4@molecule/app-fonts-dm-serif-display@1.0.4@molecule/app-fonts-ibm-plex-mono@1.0.4@molecule/app-fonts-ibm-plex-sans@1.0.4@molecule/app-fonts-inter@1.0.3@molecule/app-fonts-ionicons@1.1.1@molecule/app-fonts-jetbrains-mono@1.0.3@molecule/app-fonts-lato@1.0.4@molecule/app-fonts-lora@1.0.4@molecule/app-fonts-manrope@1.0.4@molecule/app-fonts-material-symbols@1.0.4@molecule/app-fonts-merriweather@1.0.4@molecule/app-fonts-newsreader@1.0.4@molecule/app-fonts-playfair-display@1.0.4@molecule/app-fonts-plus-jakarta-sans@1.0.4@molecule/app-fonts-source-sans-3@1.1.1@molecule/app-fonts-source-serif-4@1.0.4@molecule/app-fonts-space-grotesk@1.0.4get<DeviceService>('device')?.createOrUpdate(userId, deviceName) — it resolves to the id string, not a row — before authorization.set(req, res, { userId, deviceId }).@molecule/api-jwt@1.0.7@molecule/api-password-bcrypt hashes with the native bcrypt addon and falls back to bcryptjs on a platform with no usable prebuild. The cost factor is unchanged and both implementations read and write the same $2b$ hashes, so stored hashes keep working either way. What changes is that a cost-12 hash no longer occupies the event loop for ~100 ms at a time — the addon runs the same computation on a threadpool thread — which is what made concurrent signups take seconds on a single-vCPU deployment. provider, plus the new loadNativeBcrypt() and NativeBcrypt, are exported from the package root.@molecule/api-password-bcrypt@1.1.0commandSegments and runsInCommandPosition answer what a shell command actually runs: the command is split at its pipeline and statement separators, and each segment's word in command position is read after the wrapper prefixes a shell may put in front of it (environment assignments, sudo/env/time/timeout/nice, npx/bunx/pnpm dlx, sh/bash, and a nested sh -c '<command>'). commandRunsNoTests, isSuiteRunCommand and isPlaywrightRunCommand match a runner only in that position, so a runner named as an argument to a reader — head -30 run-api-tests-hurl.sh, grep -n playwright e2e/README.md — is no longer read as an invocation.@molecule/api-ai-tools@1.6.0setupAllDefaultBonds() now bonds a state provider, and <MoleculeProvider> supplies the React state context from it, so createStore() + useStore() work in a scaffolded app without wiring a state bond or passing a state prop; @molecule/app-state's Quick Start no longer creates a store at module scope, where it would throw before the providers are set up.@molecule/app-bonds-default-react@1.1.0read_file returns whole files only: one result is capped at MAX_READ_CALL_CHARS (60,000 characters, the ceiling a host puts on one tool result) instead of MAX_BATCH_READ_BYTES (200 KB). Files are returned whole up to it and every path past that is named in note and listed in files as not returned, so no file is ever handed back in part and the caller can see which reads it still owes. MAX_READ_RETURN_CHARS is now that ceiling less its envelope, MAX_BATCH_READ_BYTES is removed, and serializedChars / linesWithinSerialized are new: a window is sized on the text as JSON counts it, so a large read no longer arrives one newline per line over the bound it was sized for.@molecule/api-ai-tools@1.6.0_molecule_migrations table, so each file runs once; a database migrated before is adopted on its first boot, and SQLite ignores -- comments when it adds columns declared in a CREATE TABLE.@molecule/api-database-mysql@1.2.0@molecule/api-database-pglite@1.2.0@molecule/api-database-postgresql@1.2.0@molecule/api-database-sqlite@1.2.0@molecule/app-fonts-ionicons font provider: the Ionicons 2.0 icon font and its ion-* glyph classes, self-hosted, so markup written against the 2.x class names (e.g. the RealWorld Conduit spec's <i class="ion-heart">) renders icons without an external CDN.@molecule/app-fonts-ionicons@1.1.0., -, _), a body nested under user gets its own error, verifyMiddleware({ allowCookieSession: false }) makes an API token-only, and utilities.stripSensitiveUserColumns is exported.@molecule/api-locales-user@1.1.0@molecule/api-resource-user@1.5.0article_tags records the order the tags were given in — a new position column — so a reader of the join table gets the tags in that order.@molecule/api-resource-article@1.0.3convertPlaceholders refuses a statement whose $N placeholders and supplied values disagree — a value that no placeholder names, or a placeholder with no value — instead of dropping the value (or binding NULL) in silence and returning the wrong rows. The error names the placeholder and the statement, matching the contract PostgreSQL enforces at bind time.@molecule/api-database-mysql@1.2.4@molecule/api-database-sqlite@1.2.5edit_file names an old_string that is an import block in a different order, and shows the file's actual import.@molecule/api-ai-tools@1.5.10edit_file refuses a replacement whose only change is the line break at its boundary — new_string is old_string with its trailing newline added or removed — whenever the file has text on the same line there, since applying it would move that text across lines. The rest of the batch is applied, and the result carries skippedNote naming the replacement and how to make the change on purpose.@molecule/api-ai-tools@1.6.5edit_file reports a dropped line break only when the file proves the lines joined, so an edit that removed a blank line is no longer described as fusing two lines.@molecule/api-ai-tools@1.5.16edit_file reports a replacement that dropped the newline after the replaced text and the parse error it caused as one message: it shows the line the two lines became and says to re-send that replacement with the newline restored.@molecule/api-ai-tools@1.5.15edit_file reports where a not-found old_string stops matching the file — the diverging line, both versions of it, and the file from that point — instead of showing nearby lines the caller already matched.@molecule/api-ai-tools@1.6.5edit_file says when nothing changed, including a replacement whose new text is identical to its old text.@molecule/api-ai-tools@1.5.14exec retries the 412 failed_precondition: exec request failed Fly answers when it drops the connection to a Machine's exec agent — up to four attempts with 1 s / 3 s / 7 s backoff, each preceded by a Machine-state read and a wait for started when the Machine has not got there — instead of failing the whole boot or deploy on one dropped connection. A 412 that names a Machine state (machine not running) is still never retried, and every 412 that is not retried now reports the Machine's current state in its message.@molecule/api-code-sandbox-flyio@1.2.9find_files matches a pattern containing / against each file's path, so helpers/*, src/**/App.tsx and e2e/*.spec.ts return the files they name instead of an empty list.@molecule/api-ai-tools@1.5.19findMany's documentation now states the row order is unspecified unless orderBy is given: a where on an indexed column (articleId, orderId, userId) is answered from that index, so the rows come back in the index's order — not the order they were inserted in. Pass orderBy for every list whose order matters (orderBy: [{ field: 'createdAt', direction: 'desc' }]), and when no column encodes the intended order, store one (a position integer written from the array index).@molecule/api-database@1.1.2order_items records the order its lines were submitted in, in a new position column written by create(), and every read of that table orders by it (ORDER_ITEMS_IN_ORDER). Order.items therefore comes back in the submitted order rather than in whatever order the database's orderId index returns. src/__setup__/orders_position.sql adds the column to a database whose order_items predates it.@molecule/api-resource-order@1.1.4read_file and list_files give the parent-directory hint for E2B's not-found wording too, and the path-safety check retries once and names a failure that is not a timeout.@molecule/api-ai-tools@1.5.11read_file returns a small file whole when it is paged a second time.@molecule/api-ai-tools@1.5.14read_file, write_file and edit_file called with no arguments at all now answer that the call arrived empty and was probably truncated, instead of asking for a path the caller never had a chance to send. The exec_command note about a requested timeout above the tool's ceiling is attached only when the command actually came near that ceiling.@molecule/api-ai-tools@1.6.1repeatingFailureNote no longer offers the failing test as something to run while the run is still walking — a second suite run against the same app and database is refused — and names the exact re-run command to send once the run ends instead: the running command, narrowed to that test, in the directory the run was started in. The rule behind that refusal is now shared with the caller rather than restated: suiteRunInTheWay answers whether a second suite run may start beside the runs already in flight, and it, suiteCommandTarget and scopedRerunCommand live in this package so both the note and the hold that enforces it read one implementation.@molecule/api-ai-tools@1.6.5search_files scoped to one file reports each match with its file and line.@molecule/api-ai-tools@1.5.16setupAllDefaultBonds() now bonds a state provider, and <MoleculeProvider> supplies the React state context from it, so createStore() + useStore() work in a scaffolded app without wiring a state bond or passing a state prop; @molecule/app-state's Quick Start no longer creates a store at module scope, where it would throw before the providers are set up.@molecule/app-state@1.0.3@molecule/app-react@1.6.4sign() is documented as the low-level signer: a token it mints is not a session, because the app's session middleware accepts a JWT only when its payload also carries a deviceId naming an active device row — the doc now names authorization.set() in @molecule/api-resource-user as the function that mints one the middleware accepts.@molecule/api-jwt@1.0.5sign()'s reference and authorization.set()'s now state how a session token reaches a JSON response body — authorization.set(req, res, { userId, deviceId }) returns it, and verifyMiddleware({ allowCookieSession: false }) keeps the cookie off — and that an app has exactly one bonded JWT provider (keys from JWT_PRIVATE_KEY/JWT_PUBLIC_KEY, no JWT_SECRET), so replacing it changes every token the app and its packages mint and verify.@molecule/api-jwt@1.0.6@molecule/api-resource-user@1.5.4verifyMiddleware({ allowCookieSession: false }) now turns the session cookie off in both directions: set() no longer writes the token / sessionId / mol_auth cookies for a token-only request, and a token-only mount drops a session an earlier, laxer mount resolved from the cookie (a header-resolved session is untouched).@molecule/api-resource-user@1.5.2vite preview proxies /api, /health and /socket.io like the dev server, so the production bundle can be tested locally.@molecule/app-vite-config-default@1.1.3wait_for_task on a task that is still running now says how long it has been running, how far its own log says it has got (when the log carries a [done/total] counter) and how much longer that implies, so waiting on a suite that outlasts one call is not blind.@molecule/api-ai-tools@1.5.17wait_for_task on a task that is still running returns the log's failure lines (up to 40) followed by its end, instead of only the last 3 000 bytes, so a running test suite's failures are no longer hidden below its progress lines.@molecule/api-ai-tools@1.5.16wait_for_task reads a background command's own output file again after the API process restarts.@molecule/api-ai-tools@1.5.17wait_for_task shows the output so far while a command runs, and reads a command's own output file when the task log holds almost nothing.@molecule/api-ai-tools@1.5.14wait_for_task's note for a command that is still running states each fact once: the elapsed time and the "its output is still growing" clause were each printed twice, once in the note's own lead and once in the progress sentence appended to it.@molecule/api-ai-tools@1.6.3wait_for_task's note for a stuck command now hands over the pid-only stop command — kill <pids>, or kill $(cat /tmp/<taskId>.pid) when the pid walk finds nothing — instead of a pkill -f <taskId>.sh chained after it. A pkill -f pattern matches the shell running that command as well, so the suggested stop could signal the caller's own shell and leave the run it was meant to stop. The pid tree is what the pattern was for: the detached shell and every process under it. taskStopCommand is exported, so every note that hands over a stop command uses this one builder.@molecule/api-ai-tools@1.6.4wait_for_task's repeating-cause note now tells a run to KEEP GOING. It still names the cause at the third same-shaped failure so the fix can start mid-run, but the run is the only thing that names its OTHER causes, so the note tells the executor to let it finish and gives a stop command only when the cause is failing the whole run — every failure sharing it, across three spec files or more, with nothing passing since the first (an app that is not up, a 5xx on every request, a selector missing on every page). A finished run whose log holds failures now also comes back with a note grouping them by cause, one line per cause with the tests it hit, so one round of fixes covers every cause the run found.@molecule/api-ai-tools@1.6.0@molecule/api-database-sqlite@1.2.3.ts file that fails to parse on JSX is told it needs to be .tsx.@molecule/api-ai-tools@1.5.7@molecule/api-ai-tools@1.5.8@molecule/api-ai-tools@1.5.18| head -N, which would cut its pass/fail count.@molecule/api-ai-tools@1.5.9line, dot, basic, spec) has it replaced by list rather than joined beside it — two of them write every test result into the log twice — while a reporter set that writes a machine format to a file (json, html, junit) is left exactly as it was. And wait_for_task's repeating-cause note now counts DISTINCT tests: a test that two reporters printed, or that a retry failed again, is one test, so the note needs three different tests behind one cause before it names it, and it says so ("N different tests in this run have already failed the same way").@molecule/api-ai-tools@1.6.0--reporter=list — and an explicit --reporter=line is switched to it — so each test result is written to the log as it finishes, in the shape the platform reads back.@molecule/api-ai-tools@1.5.16@molecule/api-ai-tools@1.5.19\| inside a quoted pattern no longer reads as a pipe into env.@molecule/api-ai-tools@1.5.16overCeilingGraceMs (45 s), returns its output like a foreground run.@molecule/api-ai-tools@1.5.6wait_for_task asks not to edit the code under test.@molecule/api-ai-tools@1.5.16INTEGER PRIMARY KEY lets SQLite number the row instead of inserting a uuid.@molecule/api-database-sqlite@1.1.1@molecule/app-auth) no longer has its version masked.@molecule/api-ai-tools@1.5.9@molecule/api-ai-tools@1.5.11=, !=, <…) throws instead of silently matching nothing.@molecule/api-database-mysql@1.2.3@molecule/api-database-pglite@1.2.2@molecule/api-database-postgresql@1.2.2@molecule/api-database-sqlite@1.2.3@molecule/api-ai-tools@1.5.16@molecule/api-ai-tools@1.5.12ALTER TABLE … ADD COLUMN IF NOT EXISTS is accepted and applied when the column is missing, instead of failing the migration run.@molecule/api-database-mysql@1.2.1ALTER TABLE … ADD COLUMN IF NOT EXISTS is applied only when the column is missing, instead of failing the whole file and warning about it on every boot.@molecule/api-database-sqlite@1.2.1@molecule/api-ai-tools@1.5.16@molecule/api-ai-tools@1.5.8@molecule/api-ai-tools@1.5.9@molecule/api-ai-tools@1.6.2wait_for_task reads the live log, and at the third failure sharing a signature — the same error message, or the same duration to within half a second — it returns early with that cause, the tests it hit and the pid command that stops the run, instead of handing back the finished log minutes later. An iterating Playwright run also reports list,line, so each failure's own error reaches the log as the failure happens.@molecule/api-ai-tools@1.5.19@molecule/api-ai-tools@1.5.8sql, the same rule the SQLite bond applies to better-sqlite3. The bound values are never included.@molecule/api-database-d1@1.0.16sql, so datatype mismatch and no such table say which statement hit them. The bound values are never included. DataStore queries put the table they were asked for in front of that statement.@molecule/api-database-sqlite@1.2.5chat() waits at most 45 s for the first content event, asks once more with a fresh stream, and after the reply has started bounds the silence between chunks at 60 s instead of leaving both to the caller (onStreamStall reports each one).@molecule/api-ai-deepseek@1.0.7@molecule/api-ai@1.3.1@molecule/api-ai-tools@1.5.15--max-failures=0. Each was read as a capped diagnosis and had --retries=0 added, so a proof run against a deployed URL walked every failure once where the graded run retries it. Which runs are diagnoses is now one predicate (isDiagnosisRun) shared with the platform's own notes, and a run can no longer be a diagnosis to one of them and the whole suite to the other.@molecule/api-ai-tools@1.6.5commandRunsNoTests, which tells a shell command that invokes a Playwright, Vitest or Hurl runner only to print (--list, --help, show-report, codegen, install, merge-reports) from one that runs tests. streamingBackgroundCommand, isSuiteRunCommand and isPlaywrightRunCommand now leave such a command exactly as it was sent instead of adding --reporter/--retries=0 to it, starting it at lower priority, or backgrounding it.@molecule/api-ai-tools@1.5.20@molecule/api-ai-tools@1.5.14@molecule/api-database-mysql@1.2.2@molecule/api-database-pglite@1.2.1@molecule/api-database-postgresql@1.2.1@molecule/api-database-sqlite@1.2.2updatedAt forward, even in the same millisecond as the previous write.@molecule/api-resource-article@1.0.5@molecule/api-resource-comment@1.1.2@molecule/api-ai-deepseek@1.0.8@molecule/api-ai@1.3.2invalidateDeviceExistsCache after deleting the device row.@molecule/api-resource-user@1.4.12@molecule/api-resource-user@1.4.13done, so a reply that does not belong to the request that asked for it can be identified and traced.@molecule/api-ai-alibaba@1.1.4@molecule/api-ai-anthropic@1.3.5@molecule/api-ai-deepseek@1.0.9@molecule/api-ai-google@1.3.3@molecule/api-ai-local@1.0.6@molecule/api-ai-minimax@1.1.4@molecule/api-ai-moonshot@1.1.4@molecule/api-ai-openai@1.4.4@molecule/api-ai-xai@1.0.7@molecule/api-ai-zhipu@1.2.3@molecule/api-ai@1.3.3@molecule/api-ai-tools@1.5.7VITE_WATCH_POLLING=1|0 overrides the choice; a developer's machine is unchanged.@molecule/app-vite-config-default@1.1.4@molecule/app-e2e@1.2.1ADD COLUMN IF NOT EXISTS to ADD COLUMN, which SQLite can run.@molecule/api-database-sqlite@1.1.3CREATE TABLE IF NOT EXISTS declares but the existing table lacks.@molecule/api-database-sqlite@1.1.2@molecule/api-ai-tools@1.5.17read_molecule_doc) — the pointer used to fire only when the read failed.@molecule/api-ai-tools@1.5.17author=… values; AUTH* and authorization values are still masked.@molecule/api-ai-tools@1.5.13set docs say a session token needs a real device row on every sign-in path.@molecule/api-resource-user@1.5.1DIR="$(cd "$(dirname "$0")" && pwd)" no longer ends the statement's quotes early. Previously that line left the reader inside an unclosed substitution, and every newline after it was swallowed into one segment — commandSegments and runsInCommandPosition reported no program for the statements that followed, and a shell script whose text opens "$( … )" inside "$( … )" (a project's own test-runner script, for one) reported the runner it invokes as absent.@molecule/api-ai-tools@1.6.5@molecule/app-vite-config-default@1.1.5query(sql, values) resolves to — one plain { rows, rowCount, fields? } object with no .get(), .all() or .run() on it — so a caller written against better-sqlite3's db.prepare(…).get() result reads rows[0] instead of calling a method that does not exist.@molecule/api-database@1.1.3@molecule/api-resource-feature-flag@1.0.4@molecule/api-resource-follow@1.0.7@molecule/api-resource-forum-thread@1.0.5@molecule/api-resource-grade@1.0.4@molecule/api-resource-inventory@1.0.4@molecule/api-resource-invoice@1.0.4@molecule/api-resource-medication@1.0.4@molecule/api-resource-meeting@1.0.4@molecule/api-resource-message@1.0.6@molecule/api-resource-notification@1.0.5@molecule/api-resource-order@1.1.3@molecule/api-resource-payment-method@1.0.4@molecule/api-resource-product@1.0.5@molecule/api-resource-project@1.0.7@molecule/api-resource-property@1.0.5@molecule/api-resource-reaction@1.0.4@molecule/api-resource-readings@1.0.4@molecule/api-resource-review@1.0.5@molecule/api-resource-room-type@1.0.4@molecule/api-resource-share@1.0.6@molecule/api-streak@1.0.4@molecule/api-resource-subscriber@1.0.4@molecule/api-resource-tag@1.0.6@molecule/api-resource-task@1.0.4@molecule/api-resource-template@1.0.5@molecule/api-resource-thread@1.0.5@molecule/api-trash@1.0.5@molecule/api-resource-version-history@1.0.5@molecule/api-resource-wiki-page@1.0.5@molecule/api-resource-workspace@1.0.6write_file, edit_file, delete_file, rename_file and create_directory answer with the package's name and one line saying why — a node_modules path is not the app's code, the next install replaces it and a deploy never carries it — plus how to restore the package if a file there was already overwritten. Reading those files is unchanged. The refusal is exported as installedPackageWriteRefusal so a consumer's shell guard can apply the same one.@molecule/api-ai-tools@1.6.5specs/e2e/helpers/) as the place the app's browser contract actually lives. The runtime's bytes are exported as E2E_PREVIEW_RUNTIME_SCRIPT, so a server that serves the bundle itself (the static-site template's dev script) serves the same script the Vite plugin does.@molecule/app-e2e-preview@1.0.9@molecule/api-ai-tools@1.6.1sign() / verify() from @molecule/api-jwt, which pass the configured keys.@molecule/api-jwt-jsonwebtoken@1.0.3checks, incidents and uptimeWindows each carry a serviceId naming a services.id.@molecule/api-resource-status-page@1.0.3articles and article_tags — and the column that joins them: article_tags.articleId = articles.id.@molecule/api-resource-article@1.0.7comments and comment_numbers — and the column that joins them: comment_numbers.commentId = comments.id.@molecule/api-resource-comment@1.1.3users (props only, no password column) and usersSecrets — and the key that joins them: usersSecrets.id is the user's id, never a fresh uuid. It also names the handlers to call for signup, login and password changes instead of hand-writing both rows.@molecule/api-resource-user@1.5.3reactions and follows tables it reads, so a project that installs only @molecule/api-resource-article creates every table its endpoints need — favorites and the followed-authors feed answered no such table: reactions before.@molecule/api-resource-article@1.0.6@molecule/api-database@1.1.1@molecule/api-jwt@1.0.4@molecule/api-password@1.0.3@molecule/api-bonds-default-express@1.1.1@molecule/api-resource@1.0.3@molecule/api-resource-article@1.0.4@molecule/api-resource-comment@1.1.1@molecule/api-resource-device@1.0.5@molecule/api-resource-follow@1.0.6@molecule/api-resource-tag@1.0.5@molecule/api-resource-user@1.4.14@molecule/app-auth@1.2.1@molecule/app-e2e@1.2.2@molecule/app-http@1.1.1@molecule/app-routing@1.0.3@molecule/app-ui@1.3.6@molecule/app-auth-shell-react@1.0.4@molecule/app-ui-react@1.3.3@molecule/app-react@1.6.3@molecule/api-resource-* package's src/__setup__/*.sql is Postgres dialect that the migrator translates, so a package's schema should be copied into api/migrations/ as it is — a hand-written SQLite version of it drifts from the schema the package's own queries expect.@molecule/api-database-sqlite@1.2.4DEFAULT now() / DEFAULT CURRENT_TIMESTAMP default now store ISO-8601 UTC values with milliseconds (e.g. 2026-10-16T01:22:21.416Z) instead of SQLite's space-separated whole-second form, so a stored timestamp parses as the UTC instant it was written and two rows written in the same second sort in insertion order.@molecule/api-database-sqlite@1.2.1edit_file accepts replace_all on a replacement to change every occurrence of its old_string.@molecule/api-ai-tools@1.5.0validate() and its wrappers take an optional { status, body } for APIs whose validation failures use another status or error envelope.@molecule/api-middleware-validation@1.1.0withTransaction(fn): every database call made inside fn (the CRUD helpers and query()) joins one transaction, committed when fn resolves and rolled back when it throws.@molecule/api-database@1.1.0createNumberedComment, numberComment, getCommentByNumber and commentNumbers, with the comment_numbers table SQL.@molecule/api-resource-comment@1.1.0withTransaction() from @molecule/api-database run on its transaction.@molecule/api-database-mysql@1.1.0@molecule/api-database-pglite@1.1.0@molecule/api-database-postgresql@1.1.0@molecule/api-database-sqlite@1.1.0authScheme for APIs that read Authorization: Token <jwt> instead of Bearer.@molecule/app-http@1.1.0requestBody, mapAuthResponse and authScheme, for APIs with their own auth envelope and header scheme.@molecule/app-auth@1.2.0search_files and find_files rooted inside node_modules see the package's dist/, and find_files no longer returns nothing there.@molecule/api-ai-tools@1.5.0search_files reads its pattern as an extended regex (a|b), and a pattern that is not a valid regex as plain text.@molecule/api-ai-tools@1.5.2slugify folds accents.@molecule/api-resource-wiki-page@1.0.4Switch delivers a click that lands right after it renders, instead of dropping it.@molecule/app-ui-react@1.3.2wait_for_task no longer calls a command stuck while its output is still growing.@molecule/api-ai-tools@1.5.1| tail -N is dropped and a Playwright run without a reporter streams with --reporter=line.@molecule/api-ai-tools@1.5.5@molecule/api-ai-tools@1.5.4@molecule/api-ai-tools@1.5.0@molecule/app-pwa-default@1.0.5undefined for a free slug counts as free, and uniqueSlug stops with an error when every candidate is reported taken.@molecule/api-slug@1.0.1withTransaction() instead of waiting forever.@molecule/api-database-sqlite@1.1.0@molecule/api-resource-workspace@1.0.5undefined counts as free.@molecule/api-resource-article@1.0.1COMMIT or ROLLBACK fails.@molecule/api-database-mysql@1.1.0@molecule/api-ai-tools@1.5.3@molecule/api-payments-capture@1.0.1@molecule/api-code-sandbox-flyio@1.2.8pool.query accepts.@molecule/api-database-sqlite@1.0.5Button defaults to type="button" and that a form's primary action needs type="submit".@molecule/app-ui@1.3.5react and react-dom to the one copy the app resolves, adds react-router-dom to dedupe, and force-includes only optimize dependencies that are installed.@molecule/app-vite-config-default@1.1.2createNumberedComment in @molecule/api-resource-comment.@molecule/api-resource-article@1.0.2@molecule/api-agent-transcript-claude-code@1.0.1@molecule/api-agent-transcript-codex@1.0.1@molecule/api-agent-transcript-molecule-ide@1.0.1@molecule/api-agent-transcript-pi@1.0.1@molecule/api-ai-embeddings-embeddinggemma@1.0.1@molecule/api-ai-embeddings-gemini@1.0.1@molecule/api-ai-image-generation-vllm-omni@1.0.1@molecule/api-ai-translation-bergamot@1.1.1@molecule/api-ai-translation-llm@1.1.1@molecule/api-ai-translation-madlad@1.1.1@molecule/api-geolocation-molecule@1.1.1@molecule/api-geolocation-photon@1.1.1@molecule/api-http-relay@1.0.1@molecule/api-model-hosting-cloud-run@1.0.1@molecule/api-model-hosting-docker@1.0.1@molecule/api-model-hosting-koyeb@1.0.1@molecule/api-model-hosting-runpod@1.0.1@molecule/api-content-moderation-openai@1.1.1@molecule/api-ocr-teleocr@1.0.1@molecule/api-pdf-molecule@1.1.1@molecule/api-project-archive-external-state-pglite@1.0.1@molecule/api-push-notifications-molecule@1.1.1@molecule/api-screenshots-molecule@1.1.1@molecule/api-screenshots-puppeteer@1.1.1@molecule/api-web-search-brave@1.1.1@molecule/api-model-hosting@1.0.1@molecule/api-screenshots@1.1.1@molecule/api-web-search@1.1.1@molecule/app-client-search-minisearch@1.0.3@molecule/app-keyboard-shortcuts-react@1.0.3@molecule/app-locales-margin-notes@1.0.1@molecule/api-resource-product@1.0.4@molecule/api-resource-project@1.0.6@molecule/api-resource-property@1.0.4@molecule/api-resource-tag@1.0.4@molecule/api-ai-moderation-pipeline@1.0.3@molecule/api-audit-database@1.0.3@molecule/api-workflow-database@1.0.3@molecule/api-resource-activity-feed@1.0.4@molecule/api-resource-address@1.0.3@molecule/api-resource-ai-conversation@1.0.4@molecule/api-resource-booking@1.0.3@molecule/api-resource-bookmark@1.0.4@molecule/api-resource-cart@1.0.3@molecule/api-resource-comment@1.0.5@molecule/api-resource-course@1.0.3@molecule/api-resource-event-type@1.0.3@molecule/api-resource-feature-flag@1.0.3@molecule/api-resource-firmware@1.0.3@molecule/api-resource-follow@1.0.5@molecule/api-resource-forum-thread@1.0.3@molecule/api-resource-grade@1.0.3@molecule/api-resource-inventory@1.0.3@molecule/api-resource-invoice@1.0.3@molecule/api-resource-journal-entry@1.0.3@molecule/api-resource-medication@1.0.3@molecule/api-resource-meeting@1.0.3@molecule/api-resource-message@1.0.5@molecule/api-resource-notification@1.0.4@molecule/api-notifications-preferences@1.0.3@molecule/api-resource-order@1.1.2@molecule/api-resource-payment-method@1.0.3@molecule/api-resource-product@1.0.3@molecule/api-resource-project@1.0.5@molecule/api-resource-property@1.0.3@molecule/api-resource-reaction@1.0.3@molecule/api-resource-readings@1.0.3@molecule/api-reputation@1.0.3@molecule/api-resource-review@1.0.4@molecule/api-resource-room-type@1.0.3@molecule/api-resource-share@1.0.5@molecule/api-streak@1.0.3@molecule/api-resource-subscriber@1.0.3@molecule/api-resource-tag@1.0.3@molecule/api-resource-task@1.0.3@molecule/api-resource-template@1.0.4@molecule/api-resource-thread@1.0.4@molecule/api-trash@1.0.4@molecule/api-resource-version-history@1.0.4@molecule/api-resource-wiki-page@1.0.3@molecule/api-resource-workspace@1.0.4@molecule/api-leaderboard@1.0.3@molecule/api-realtime-rooms@1.0.3Authorization: Token <jwt>, not only Bearer.@molecule/api-resource-user@1.4.11@molecule/api-resource-forum-thread@1.0.4ShareModal accepts host sections as children, a showLinks toggle and a refreshSignal; ChatPanel forwards them as shareModalContent, shareLinksAllowed and shareLinksRefreshSignal.@molecule/app-ide-react@1.21.0@molecule/api-resource-ai-models@1.16.0ScreenshotProvider interface — capture({url|html}, options) returns PNG/JPEG bytes for a URL or an HTML string, with viewport, fullPage, format, quality, device-scale and settle-delay options — plus the setProvider/capture convenience surface for bonds.@molecule/api-screenshots@1.1.0ScreenshotProvider interface (capture({url|html}, options) → image bytes) with viewport, fullPage, format (png/jpeg), quality, device scale and settle-delay options, plus the setProvider/capture convenience surface for bonds.@molecule/api-screenshots@1.0.0ScreenshotProvider bond — capture a URL or an HTML string to a PNG/JPEG image through molecule.dev's headless-Chrome render machine (MOLECULE_API_KEY/MOLECULE_SERVICES_URL, metered per capture), with the service limits mirrored locally so a bad call never leaves the process.@molecule/api-screenshots-molecule@1.1.0ScreenshotProvider bond — captures PNG/JPEG images of a URL or an HTML string with in-process headless Chrome, with the documented viewport/scale/full-page/pixel-budget caps enforced before Chrome does any work.@molecule/api-screenshots-puppeteer@1.0.0ScreenshotProvider bond — captures PNG/JPEG images of a URL or an HTML string with in-process headless Chrome. Viewport, scale, full-page-height and pixel-budget caps are enforced before Chrome does any work; note the process has no egress guard, so only capture URLs you control.@molecule/api-screenshots-puppeteer@1.1.0applyNetwork(allowOut, { open: true }) allows every public host while denying all private, loopback, link-local and other non-public IPv4 ranges.@molecule/api-code-sandbox-e2b@1.2.12exportFiles reads a large archive back with a five-minute request budget instead of the SDK's 60-second default.@molecule/api-code-sandbox-e2b@1.2.14@molecule/api-ai-tools@1.4.4@molecule/api-resource-ai-models@1.16.0@molecule/api-agent-runtime-pi@1.0.3@molecule/app-ide-react@1.21.1freeTier flag instead of hardcoded model ids.@molecule/app-ide-react@1.21.00.0.0.0/8, which E2B refuses as a denied CIDR.@molecule/api-code-sandbox-e2b@1.2.13@molecule/api-resource-ai-models@1.15.2@molecule/api-pdf-puppeteer or @molecule/api-pdf-pdfkit without code changes.@molecule/api-pdf-molecule@1.1.0@molecule/app-ide-react@1.20.0BackgroundTaskState carries an optional description, the reason a background command was started.@molecule/app-ai-chat@1.5.2exec_command accepts an optional description: a one-line reason shown in place of the raw command.@molecule/api-ai-tools@1.4.3list() no longer resets the deadline of the sandboxes it enumerates: polling an account used to rewrite every running sandbox's timeout to the provider default, which paused sandboxes that had been kept alive and kept idle ones billing.@molecule/api-code-sandbox-e2b@1.2.11list() now reports a 404 from the org-wide Machine listing as a failed query instead of answering an empty list, so a caller reconciling from the result cannot read an unknown org as "no sandboxes".@molecule/api-code-sandbox-flyio@1.2.7@molecule/app-ide-react@1.19.13read_file card no longer renders a dangling comma when one of the requested paths has no file name (a trailing-slash path like src/).@molecule/app-ide-react@1.19.13read_file card now opens the file each listed name belongs to when one of the requested paths has no file name (a trailing-slash path like src/), instead of opening that path.@molecule/app-ide-react@1.19.13@molecule/api-ai-video-generation-kandinsky@1.2.2@molecule/api-code-sandbox-flyio@1.2.7@molecule/api-code-sandbox-flyio@1.2.7@molecule/api-code-sandbox-flyio@1.2.7@molecule/api-code-sandbox-flyio@1.2.7@molecule/api-code-sandbox-flyio@1.2.7regions list is empty now resolves to the platform default region instead of no region at all.@molecule/api-resource-ai-models@1.15.1@molecule/api-ai-anthropic@1.3.4@molecule/api-code-sandbox-flyio@1.2.7@molecule/app-ai-voice-whistle@1.1.2@molecule/app-locales-ide@1.10.7@molecule/app-locales-ide@1.10.8@molecule/app-ide-react@1.19.13@molecule/app-ide-react@1.19.13@molecule/api-code-sandbox-e2b@1.2.11@molecule/api-ai-speech-whistle@1.1.2@molecule/app-ai-voice-whistle@1.1.2@molecule/api-ai-anthropic@1.3.4@molecule/api-code-sandbox-e2b@1.2.11@molecule/api-ai-anthropic@1.3.4@molecule/api-ai-anthropic@1.3.4@molecule/api-code-sandbox-e2b@1.2.11needle.wasm URL now loads that build instead of reusing an engine already loaded for another wasm URL.@molecule/api-ai-speech-whistle@1.1.2@molecule/api-resource-user@1.4.9@molecule/api-resource-user@1.4.9@molecule/api-resource-user@1.4.9$ characters.@molecule/app-ide-react@1.19.13@molecule/api-resource-ai-models@1.15.1ide.chat.showEarlier translation key.@molecule/app-locales-ide@1.10.6@molecule/api-code-sandbox-e2b@1.2.11@molecule/api-code-sandbox-flyio@1.2.7@molecule/api-resource-user@1.4.10@molecule/app-ide-react@1.19.13+0 −0.@molecule/app-ide-react@1.19.13@molecule/app-ide-react@1.19.13@molecule/app-ide-react@1.20.4@molecule/app-ide-react@1.20.3@molecule/app-ide-react@1.20.2@molecule/api-ai-anthropic@1.3.4@molecule/api-ai-speech-whistle@1.1.2@molecule/api-ai-speech-whistle@1.1.2@molecule/app-ide-react@1.20.5@molecule/app-ide-react@1.20.1edit_file replacement entry that is null or a non-object is skipped instead of read, and the live activity label reads each declared-string tool-input field through the same string coercion the cards use.@molecule/app-ide-react@1.19.13list() stops starting new sandbox connects once one has failed, instead of connecting to every remaining sandbox on behalf of a call that already failed.@molecule/api-code-sandbox-e2b@1.2.10start()/wake() on a Machine that is still booting now waits until it is running instead of resolving early, so the first command after the call no longer fails with "machine not running".@molecule/api-code-sandbox-flyio@1.2.6read_file card now names every file a batch read opened (each name opens its own file) instead of showing a bare "Read", and the streaming indicator names the file being read.The text on a tool card can now be selected and copied, and a "Wait for background task" card names the command it is waiting on.
@molecule/app-ide-react@1.19.12importFiles extract now removes the staged archive instead of leaving it behind — on the workspace volume for the chunked fallback, in the sandbox's /tmp for the object-store path — while still failing with tar's real exit code.@molecule/api-code-sandbox-flyio@1.2.6@molecule/api-ai-speech-whistle@1.1.1@molecule/app-ai-voice-whistle@1.1.1@molecule/api-ai-anthropic@1.3.3@molecule/api-ai-anthropic@1.3.3@molecule/api-ai-anthropic@1.3.3@molecule/api-ai-video-generation-kandinsky@1.2.1@molecule/api-analytics-http@1.0.3@molecule/api-ai-anthropic@1.3.3@molecule/app-ai-voice-whistle@1.1.1@molecule/api-ai-anthropic@1.3.3@molecule/api-ai-video-generation-ltx@1.1.2scheduledPricing can carry a replacement longContextPricing band that takes effect from the same effectiveFrom (omitted → the existing band carries through), so a price change on a prompt-length-priced model moves both rate cards together. effectiveLongContextPricing() resolves the band in effect at an instant; modelRegionRates() and withEffectivePricing() use it.@molecule/api-resource-ai-models@1.15.0@molecule/api-ai-speech-whistle — Cactus Compute's 16.9 MB seven-language speech-to-text running in-process on CPU via the needle WASM engine, with word timestamps, keyword biasing and streaming, and no server or API key.@molecule/api-ai-speech-whistle@1.1.0@molecule/app-ai-voice-whistle — on-device speech-to-text in the browser via Cactus Compute's 16.9 MB Whistle WASM model (CPU-only, seven languages, no WebGPU, audio never leaves the device).@molecule/app-ai-voice-whistle@1.1.0VideoJobResult gains expiresAt, set when the provider reports when url is evicted. kandinsky: when the server requires an API key, a completed job's MP4 is downloaded by the bond and returned inline as result.data (the content URL answers 401 without the key), the server's expires_at is surfaced as result.expiresAt, the MP4 is downloaded once per job (later polls reuse it), and a 2xx response with a non-JSON body fails as a KandinskyVideoError instead of a raw SyntaxError.@molecule/api-ai-video-generation-kandinsky@1.2.0@molecule/api-ai-video-generation@1.2.0generate() refuses a job id it could never poll back (dot segments, empty segments, ? or #) instead of minting a handle getStatus() rejects, and an error response whose body dies mid-stream still fails as an LtxVideoError carrying the status instead of a raw TypeError.@molecule/api-ai-video-generation-ltx@1.1.1generate() refuses a non-finite durationSeconds with a 400 instead of serializing it to duration: null, which the 2.5 tiers read as automatic duration.@molecule/api-ai-video-generation-ltx@1.1.1getStatus() rejects job ids whose tail contains dot segments (literal or percent-encoded), empty, ? or # segments, and percent-encodes each tail segment when building the poll URL. A 2xx response with a non-JSON body fails as an LtxVideoError instead of a raw SyntaxError. A completed job whose result carries no video_url fails with a typed error instead of reporting success with an empty result.@molecule/api-ai-video-generation-ltx@1.1.1list() connects to all running sandboxes concurrently instead of one round trip at a time, so enumerating a fleet costs one connect latency rather than one per sandbox.@molecule/api-code-sandbox-e2b@1.2.9list() keeps at most 16 sandbox connects in flight instead of one per running sandbox at once — a fleet sweep stays concurrent without spending a socket and file descriptor per sandbox on every poll.@molecule/api-code-sandbox-e2b@1.2.9transcribeStream session that is aborted while it waits for the engine's stream no longer writes its final partial block into the engine (or emits transcripts for a cancelled dictation); the session queued behind it no longer inherits that audio.@molecule/api-ai-speech-whistle@1.1.0importFiles spool/extract or exportFiles archive create now fails with the failing stage's name and the command's stderr instead of the SDK's bare "exit status N" error.@molecule/api-code-sandbox-e2b@1.2.9RangeError; the unrepresentable field is treated as absent.@molecule/api-ai-video-generation-kandinsky@1.2.0"__proto__" now raises the usual "no answer for question" error instead of being fabricated into a zero-confidence answer.@molecule/api-ai-decisions-liquid-d1@1.1.1fps is refused with a 400 LtxVideoError before the submit, instead of being serialized to JSON null.@molecule/api-ai-video-generation-ltx@1.1.1@molecule/api-code-sandbox-e2b@1.2.9@molecule/app-ai-voice-whistle@1.1.0WhistleWavError code truncated (missing chunks), as the error's documented contract promises — the old 44-byte acceptance floor classified every cut-off file as not-wav, leaving no input that could reach the truncated code. Files too short to name a container at all are still not-wav.@molecule/api-ai-speech-whistle@1.1.0KandinskyVideoError carrying the status, and an MP4 download that dies mid-transfer fails as a typed error with status 0 instead of a raw TypeError.@molecule/api-ai-video-generation-kandinsky@1.2.0transcribeStream calls are serialized: the engine keeps ONE live stream per process, so two transcriptions at once no longer interleave their audio into a single shared transcript. A session holds the engine from its first block to its stop; a concurrent call queues until it is free.@molecule/api-ai-speech-whistle@1.1.0WhistleEngineError (download-failed / load-failed) instead of a raw network error, and the app voice bond's speak() no longer lets a replaced utterance's end event idle the replacement while it is still speaking.@molecule/api-ai-speech-whistle@1.1.0@molecule/app-ai-voice-whistle@1.1.0timeoutMs config), so a connection that never answers fails instead of leaving decide() pending forever. The caller's signal and the deadline both apply, whichever fires first.@molecule/api-ai-decisions-liquid-d1@1.1.1@molecule/api-code-sandbox-e2b@1.2.9@molecule/api-code-sandbox-flyio@1.2.5@molecule/api-agent-runtime-claude-code@1.1.3@molecule/api-ai-speech-audio8@1.0.1@molecule/api-ai-speech-confucius4@1.0.1@molecule/api-ai-speech-llm@1.0.1@molecule/api-ai-speech-nemo-speech@1.0.1@molecule/api-analytics-http@1.0.2@molecule/api-code-sandbox-flyio-sprites@1.0.3@molecule/api-database-d1@1.0.5@molecule/api-git-provider-gitea@1.0.6@molecule/api-git-provider-github@1.0.6@molecule/api-git-provider-gitlab@1.0.6@molecule/api-git-provider-smolforge@1.0.6@molecule/api-model-hosting-modal@1.0.1@molecule/api-project-archive-external-state-d1@1.0.4@molecule/api-scheduler-cloudflare@1.0.4@molecule/api-uploads-mirror@1.1.3@molecule/api-git-provider@1.0.6@molecule/api-resource-user@1.4.8durationSeconds, fps, seed, steps, guidanceScale, width, height) are refused with a 400 KandinskyVideoError before any request, instead of riding the multipart form as the literal strings "NaN"/"Infinity".@molecule/api-ai-video-generation-kandinsky@1.2.0@molecule/api-resource-user@1.4.8LIQUID_BASE_URL (the hosted-API gateway override) with the secrets registry, so the boot-time configuration report lists it like the bond's other environment variables.@molecule/api-ai-decisions-liquid-d1@1.1.1FloatBlockResampler blockSize that is zero, negative or non-finite at construction. Such a block size never advances the emit loop's position, so the first push() would emit blocks forever — an event-loop hang with an unbounded block array. The constructor now refuses it with the same error shape it already applies to a non-positive sample rate.@molecule/api-ai-speech-whistle@1.1.0headers hook is re-resolved on every attempt so short-lived tokens are re-minted. A 2xx response with a non-JSON body fails with a status-carrying error instead of a raw SyntaxError. Configuration is resolved on each call, so keys the secrets registry writes into the environment after startup are picked up without a restart.@molecule/api-ai-decisions-liquid-d1@1.1.1/model usage hint lists example model ids from the live model catalog instead of a fixed, outdated set.@molecule/app-ide-react@1.19.11@molecule/app-locales-ide@1.10.5listening (it used to stick at error while dictation kept working), dispose() reports idle instead of the stale in-session state, and an engine download that fails after the user already pressed stop no longer reports a start failure for the abandoned session.@molecule/app-ai-voice-whistle@1.1.00xFFFFFFF8 no longer traps the parser in an endless scan that hung transcribe()), and source sample rates outside 4000–384000 Hz are rejected as unsupported-format instead of scaling the 16 kHz resample into a crash or an out-of-memory allocation.@molecule/api-ai-speech-whistle@1.1.0@molecule/api-templating-handlebars@1.0.3@molecule/api-templating-mjml@1.0.3@molecule/api-ai-decisions-kev@1.0.0@molecule/api-ai-decisions-liquid-d1@1.1.0@molecule/api-ai-video-generation-kandinsky@1.1.0@molecule/api-ai-video-generation-ltx@1.1.0longContextPricing to model definitions and an optional promptTokens argument to modelRegionRates, so models priced by prompt length (Claude Haiku 5.5 above 100K tokens) bill the long-context rates.@molecule/api-resource-ai-models@1.14.0@molecule/api-resource-ai-models@1.14.0@molecule/api-ai-video-generation@1.1.0@molecule/api-push-notifications-web-push; swap without code changes.@molecule/api-push-notifications-molecule@1.1.0@molecule/api-code-sandbox-e2b@1.2.8@molecule/api-resource-ai-models@1.14.0@molecule/api-ai-decisions@1.1.1@molecule/api-ai-decisions-laya@1.1.1@molecule/api-code-sandbox-flyio@1.2.4@molecule/api-resource-user@1.4.7@molecule/api-agent-runtime-pi@1.0.2@molecule/api-ai-embeddings-embeddinggemma@1.0.0@molecule/api-ai-embeddings-gemini@1.0.0setupDatabasePglite, setupPaymentsCapture, setupEmailsCapture and createMigratorPglite, the setup functions for a zero-server browser profile; @molecule/api-database-pglite and @molecule/api-payments-capture are optional peers, loaded only when called.@molecule/api-bonds-default-express@1.1.0task and inputType to EmbedParams for instruction-prefixed models, plus an optional embedContent method and modalities list for embedding images, audio and video alongside text.@molecule/api-ai-embeddings@1.1.0baseUrl and defaultModel.@molecule/api-ai-embeddings-openai@1.0.5createAudioRenderRoutes now requires mediaRoot and outputDir, ignores client outputPath/queueName, confines clip sources to the media root, and ffmpeg opens only local files unless allowRemoteSources is set.@molecule/api-audio-render@2.0.0createEnqueueRenderHandler now requires mediaRoot and outputDir, ignores client outputPath/jobId/queueName, confines clip sources to the media root, and ffmpeg opens only local files unless allowRemoteSources is set.@molecule/api-video-render@2.0.0buildMockFixtureSet, serializeFixtureSet and the browser-safe ./router and ./browser entries, so a static build can answer fetch from the same fixtures and routing the server uses.@molecule/api-mock-server@1.2.0error event when a target does not listen for one; each target still receives the failure through its own error callback.@molecule/api-uploads-mirror@1.1.2@molecule/app-locales-ide@1.10.4@molecule/api-payments-stripe@1.2.6?conversationId= (looked up within the project) instead of whichever conversation the project listed first; with no id and several conversations it answers 400.@molecule/api-resource-ai-conversation@1.0.3=, +, -, @, a tab or a carriage return with a single quote so spreadsheets read them as text, and quote cells containing carriage returns.@molecule/api-reporting-database@1.0.3@molecule/api-logger as a peer dependency.@molecule/api-billing-routes@1.1.2@molecule/app-i18n as a peer dependency.@molecule/app-achievement-card-react@1.0.3@molecule/app-amount-input-react@1.0.3@molecule/app-inbox-row-react@1.0.4@molecule/app-password-strength-meter-react@1.0.3@molecule/app-slide-thumbnail-react@1.0.4@molecule/app-webhook-inspector-react@1.0.4@types/express-serve-static-core, whose types it augments.@molecule/api-middleware-body-parser-express@1.0.3@types/express for the Express types it imports.@molecule/api-middleware-validation@1.0.3react-native and expo-constants as optional peer dependencies.@molecule/app-push-react-native@1.0.3zod as a dependency and express and @molecule/api-server-default-express as peer dependencies.@molecule/api-bonds-default-express@1.0.3quill-delta dependency.@molecule/app-rich-text-quill@1.0.5uuid dependency.@molecule/api-resource-device@1.0.4@molecule/api-resource-user@1.4.6react-router and peer-depends on react-router ^7 || ^8.@molecule/app-safe-link-react@1.0.3@molecule/app-code-editor-monaco@1.0.3pem correctly from this ES module and says how to install it when missing; pem is declared as an optional peer dependency.@molecule/api-server-default-express@1.0.3@molecule/api-mock-server@1.2.0@molecule/api-audio-render@2.0.1@molecule/api-video-render@2.0.1node:crypto randomBytes, with no Math.random fallback.@molecule/api-resource-share@1.0.4@molecule/app-ide-react@1.19.10DATABASE_URL (and the password in it) when it cannot connect; it names the host and database only.@molecule/api-database-postgresql@1.0.5bond('audit', provider).@molecule/api-audit@1.0.3bond('content', provider).@molecule/api-content@1.0.3bond('cron', provider).@molecule/api-cron@1.0.3bond('crypto-prices', provider).@molecule/api-crypto-prices@1.0.3bond('drug-database', provider).@molecule/api-drug-database@1.0.3bond('emails-inbound', provider).@molecule/api-emails-inbound@1.0.3bond('encryption', provider).@molecule/api-encryption@1.1.1bond('error-tracking', provider).@molecule/api-error-tracking@1.0.3bond('esign', provider).@molecule/api-esign@1.0.3bond('feature-flags', provider).@molecule/api-feature-flags@1.0.3bond('flights', provider).@molecule/api-flights@1.0.3bond('geolocation', provider).@molecule/api-geolocation@1.0.3bond('hotels', provider).@molecule/api-hotels@1.0.3bond('import-export', provider).@molecule/api-import-export@1.0.3bond('kyc', provider).@molecule/api-kyc@1.0.3bond('media-streaming', provider).@molecule/api-media-streaming@1.0.3bond('multi-tenancy', provider).@molecule/api-multi-tenancy@1.0.3bond('notification-center', provider).@molecule/api-notification-center@1.0.3bond('nutrition-database', provider).@molecule/api-nutrition-database@1.0.3bond('oauth-client', provider).@molecule/api-oauth-client@1.0.3bond('permissions', provider).@molecule/api-permissions@1.0.3bond('rate-limit', provider).@molecule/api-rate-limit@1.0.3bond('realtime', provider).@molecule/api-realtime@1.0.3bond('search', provider).@molecule/api-search@1.0.3bond('shipping', provider).@molecule/api-shipping@1.0.3bond('sitemap', provider).@molecule/api-sitemap@1.0.3bond('sms', provider).@molecule/api-sms@1.0.3bond('text-provenance', provider).@molecule/api-text-provenance@1.0.2bond('travel', provider).@molecule/api-travel@1.0.3bond('video-meetings', provider).@molecule/api-video-meetings@1.0.3bond('video-rooms', provider).@molecule/api-video-rooms@1.0.3bond('weather', provider).@molecule/api-weather@1.0.3bond('webhook', provider).@molecule/api-webhook@1.0.3bond('workflow', provider).@molecule/api-workflow@1.0.3APP_ORIGIN is configured (it used to require SITE_ORIGIN), and the link carries the account's email so the reset page can prefill it.@molecule/api-resource-user@1.4.5@molecule/api-image-sharp@1.0.4createProvider() to run several S3-compatible stores in one app, each with its own endpoint, credentials, bucket, storage class and key prefix, plus headFile() for object metadata, per-object Object Lock retention and checksum options, and describeBucketProtection() / bucketProtectionMeets() to check a bucket is versioned and locked; the env-configured provider is unchanged.@molecule/api-uploads-s3@1.1.0@molecule/api-encryption-aes@1.1.0encryptStream()/decryptStream() to EncryptionProvider, the shared mol-aead-chunked-v2 stream format, EncryptionStreamError with a code that separates damaged ciphertext from a wrong key or a truncated stream, isEncryptionStreamError() and hasStreamEncryption().@molecule/api-encryption@1.1.0broker:ai-decisions, no AI-vendor account; metered at the model's real token spend). Local pre-checks refuse oversized input before any request.@molecule/api-ai-decisions-molecule@1.1.0geocode and reverseGeocode billed to your molecule project (scope broker:maps, no maps-vendor account), served by molecule's self-hosted OpenStreetMap geocoder at zero upstream cost. Local pre-checks refuse oversized or out-of-range calls before any request; errors are MoleculeServiceError with status and errorKey.@molecule/api-geolocation-molecule@1.1.0ImageProvider, billed to your molecule project (scope broker:image; self-hosted upstream, zero vendor cost). Use the raw transform() to run a multi-op pipeline in one round trip.@molecule/api-image-molecule@1.1.0@molecule/api-uploads-mirror@1.1.0GeolocationProvider — geocode, reverse geocode, Haversine distance and search-as-you-type autocomplete against any Photon instance (PHOTON_BASE_URL defaults to the low-volume public instance; self-host for production). Serves an OSM extract, so coverage is the loaded region and out-of-region queries return an empty array; results require "© OpenStreetMap contributors" attribution.@molecule/api-geolocation-photon@1.1.0@molecule/api-uploads-encrypted@1.1.0createProvider refuses a key version outside the stream header's range and a prior key at the current version; verify() answers false instead of throwing for a candidate hash with multi-byte characters; rotateKey() takes the next free version (never one a prior key holds) and refuses to run past the stream header's range.@molecule/api-encryption-aes@1.1.1headFile throws NoSuchBucket for a missing bucket instead of answering "no object"; partSizeBytes sets the multipart part size for bodies above the default ~48.8 GiB ceiling.@molecule/api-uploads-s3@1.1.1importFiles spools in bounded pieces whatever the chunk size it is given; exportFiles removes its temporary archive on failure too and names it uniquely.@molecule/api-code-sandbox-e2b@1.2.7importFiles spools the archive into the sandbox in 8 MB pieces instead of holding the whole archive in memory.@molecule/api-code-sandbox-e2b@1.2.6limit) or a source that closes before it ends now fails the upload instead of sealing the truncated body as a complete object; the README says what the inner store sees.@molecule/api-uploads-encrypted@1.1.1uploadPromise is marked handled for callers that rely on onError; uploads are tracked by their returned file as well as their id.@molecule/api-uploads-mirror@1.1.1temperature parameter by default — several catalog models reject the parameter itself with a 400, which made every decide call fail against them. Pin sampling with the new optional temperature config only when the bonded model accepts it.@molecule/api-ai-decisions-llm@1.2.1state as compact JSON instead of indented JSON, so deeply nested input no longer grows the prompt by orders of magnitude.@molecule/api-ai-decisions-llm@1.2.1@molecule/api-code-sandbox-e2b@1.2.7ide.chat.viaDictation.badge) in every locale.@molecule/app-locales-ide@1.10.3@molecule/api-analytics-axiom@1.0.0@molecule/api-logger-axiom@1.0.0trackBondFailure — the standard bond failure telemetry (bond.failure events, best-effort and throttled) that makes every vendor-facing bond failure queryable. The email, S3 uploads and Stripe bonds emit it at their vendor failure boundaries, including swallowed ones like a webhook handler returning null.@molecule/api-analytics@1.1.0readFileBytes / writeFileBytes on the sandbox handle for exact binary file I/O; the E2B bond implements them through the envd file API.@molecule/api-code-sandbox@1.3.0destroy() now reports a failed machine or app delete instead of swallowing it, so a caller can retry; a 404 still counts as already gone.@molecule/api-code-sandbox-flyio@1.2.3openUrl strips leading control characters and spaces before reading the URL scheme, so a target like \u0001javascript:… is refused instead of passing as a relative path.@molecule/app-utilities@1.0.4ResponsiveAppShell closes its drawer on same-route navigations too — the fleet's #top safe-target pattern appends a hash when the current nav item is re-tapped, which changed neither pathname nor search, and the drawer previously stayed open over the page.@molecule/app-ui-react@1.3.1shutdown() drains within a bounded budget and reports what it could not send.@molecule/api-analytics-axiom@1.0.2@molecule/api-analytics-axiom@1.0.1@molecule/app-ai-chat-http@1.3.1author with a name but no id) renders its name as plain text instead of a profile button, so the click no longer opens the viewer's own profile.@molecule/app-ide-react@1.19.6@molecule/api-code-sandbox-e2b@1.2.4@molecule/app-ide-react@1.19.8@molecule/app-react@1.6.1@molecule/app-react@1.6.1@molecule/api-resource-user@1.4.4@molecule/api-agent-runtime-pi@1.0.1ANTHROPIC_BASE_URL/ANTHROPIC_AUTH_TOKEN to the CLI when the caller supplies them.@molecule/api-agent-runtime-claude-code@1.1.2trackBondFailure — the standard bond failure telemetry (bond.failure events, best-effort and throttled) that makes every vendor-facing bond failure queryable. The email, S3 uploads and Stripe bonds emit it at their vendor failure boundaries, including swallowed ones like a webhook handler returning null.@molecule/api-emails-mailgun@1.0.7@molecule/api-emails-resend@1.0.2@molecule/api-emails-sendgrid@1.0.3@molecule/api-emails-sendmail@1.0.7@molecule/api-emails-ses@1.0.7@molecule/api-payments-stripe@1.2.5@molecule/api-uploads-s3@1.0.8@molecule/api-analytics-axiom@1.0.2@molecule/api-logger-axiom@1.0.2GET /user/emails (the user:email scope it always requested) and returns the primary verified address, instead of only the public profile email — which is null for most users, so accounts were created with no email at all. Falls back to the public email when the endpoint is unavailable; a failed lookup never fails the login.@molecule/api-oauth-github@1.2.1//host) open in a new tab with noopener noreferrer instead of navigating the current tab to another origin.@molecule/app-ide-react@1.19.7aria-label: below the md breakpoint the visible label hides and the link collapses to an icon-only target whose icon is aria-hidden, so screen readers previously announced an unnamed link.@molecule/app-top-nav-layout-react@1.0.3@molecule/api-resource-user@1.4.3readFileBytes / writeFileBytes on the sandbox handle for exact binary file I/O; the E2B bond implements them through the envd file API.@molecule/api-code-sandbox-e2b@1.2.5resume: true) now carry Accept: text/event-stream, so a server that is still streaming the turn can attach the request to the live stream (the attached frame) instead of refusing with 409 once the retry backoff runs out. New sends deliberately keep the 409-retry path — attaching never reads the request body, so a new message must serialize behind the running turn.@molecule/app-ai-chat-http@1.3.3verifyEgress() probe sandbox is now created to be killed at its deadline instead of paused, so a leaked probe never leaves a snapshot on the host.@molecule/api-code-sandbox-e2b@1.2.5AWS_S3_SOCKET_TIMEOUT_MS, the name the provider reads.@molecule/api-uploads-s3@1.0.7@molecule/api-emails-mailgun@1.0.6limit query parameter to 1–500 and the offset to 0 or more.@molecule/api-resource-notification@1.0.3@molecule/api-deploy-target-s3@1.1.1@molecule/api-uploads-s3@1.0.6@molecule/app-locales-ide@1.10.1viaDictation (persisted server-side, so the badge survives a reload), and the message header renders a muted-red mic beside the author name — same 16px icon box as the other header glyphs, with a "Dictated by voice" tooltip.@molecule/app-ai-chat-http@1.3.2@molecule/app-ai-chat@1.5.1@molecule/app-ide-react@1.19.9@molecule/app-react@1.6.2@molecule/app-locales-ide@1.10.2^1.0.0 — 1.2.1 pinned the optional peer to 1.0.1, but the bond's source version is 1.0.0, so the range refused the only version that exists (and would refuse the first published one if it lands as 1.0.0).@molecule/api-agent-transcript-autodetect@1.2.2@molecule/api-agent-runtime-pi@1.0.0pi --mode json output for @molecule/api-agent-transcript.@molecule/api-agent-transcript-pi@1.0.0@molecule/api-resource-ai-models@1.13.0@molecule/app-ui-react@1.3.0pi --mode json output.@molecule/api-agent-transcript-autodetect@1.2.0@molecule/app-ui-react@1.3.0after: touch hit-area (visual sm/md/lg unchanged) — meets WCAG 2.5.8 by default instead of shipping 20–28px targets. ThemeToggle trigger grew from 30px to a 40×40 hit area (20px icon centered, visual unchanged).@molecule/app-ui-react@1.3.0PATCH /projects/:id now persists the starting-point fields its input type advertises (projectType, framework, packages, templateSlug, brandingSpec). The handler silently dropped them, so a caller persisting a chosen flagship through the route scaffolded the blank starter instead — every template demo preview deployed the generic "project-app" under the template's URL.@molecule/api-resource-project@1.0.4read_molecule_doc or find_package card opens the package's README.md in the editor. The link still named the pre-rename MOLECULE.md, so the editor switched views but no file ever loaded.@molecule/app-ide-react@1.19.4@molecule/app-ui-react@1.3.0@molecule/api-agent-transcript-pi, which is not yet published to the public registry, making every registry install of autodetect fail outright (E404 resolving the install graph). The Pi reader now joins harnessReaders only when the consuming project ships the bond itself.@molecule/api-agent-transcript-autodetect@1.2.1vialoh from GitHub's vialoh@github) instead of flattening it into vialohgithub; collisions append re-checked numeric then id-based suffixes.@molecule/api-resource-user@1.4.2@molecule/app-ide-react@1.19.5@molecule/app-settings-panel-react@1.0.5@molecule/app-e2e-fixtures-default@1.2.2MOL_E2E_RRWEB=1. On by default it failed console-guarded tests fleet-wide: the loader ran in the init phase where document.head can be null (a pageerror on every page), and its unpkg load is blocked by billing/pricing pages' CSP (a console.error per load). The loader keeps both guards for whoever opts in; videos record either way.@molecule/app-e2e-fixtures-default@1.2.1after: touch hit-area (visual sm/md/lg unchanged) — meets WCAG 2.5.8 by default instead of shipping 20–28px targets. ThemeToggle trigger grew from 30px to a 40×40 hit area (20px icon centered, visual unchanged).@molecule/app-ui-tailwind@1.2.6@molecule/app-ui-react@1.3.0@molecule/app-e2e-fixtures-default@1.2.0@molecule/app-ai-chat-http@1.3.0@molecule/api-oauth-github@1.2.0@molecule/api-oauth-gitlab@1.2.0@molecule/api-oauth-google@1.2.0@molecule/api-oauth-twitter@1.2.0@molecule/api-code-sandbox-docker@1.1.4ai-embeddings bond).@molecule/api-ai-embeddings-openai@1.0.4@molecule/api-ai-image-generation-openai@1.0.3@molecule/api-ai-image-generation-stability@1.0.3@molecule/api-ai-speech-elevenlabs@1.0.3@molecule/api-cache-memcached@1.0.3@molecule/api-cache-memory@1.0.3@molecule/api-cache-redis@1.0.3@molecule/api-oauth-apple@1.0.3@molecule/api-password-bcrypt@1.0.3@molecule/api-payments-apple@1.0.3@molecule/api-payments-google@1.0.3@molecule/api-project-archive-external-state-mysql@1.0.3@molecule/api-project-archive-external-state-postgresql@1.0.3@molecule/api-project-archive-external-state-sqlite@1.0.3@molecule/api-uploads-filesystem@1.0.3@molecule/app-fonts-dm-sans@1.0.3@molecule/app-fonts-dm-serif-display@1.0.3@molecule/app-fonts-ibm-plex-mono@1.0.3@molecule/app-fonts-ibm-plex-sans@1.0.3@molecule/app-fonts-lato@1.0.3@molecule/app-fonts-lora@1.0.3@molecule/app-fonts-manrope@1.0.3@molecule/app-fonts-material-symbols@1.0.3@molecule/app-fonts-merriweather@1.0.3@molecule/app-fonts-newsreader@1.0.3@molecule/app-fonts-playfair-display@1.0.3@molecule/app-fonts-plus-jakarta-sans@1.0.3@molecule/app-fonts-source-serif-4@1.0.3@molecule/app-fonts-space-grotesk@1.0.3@molecule/api-two-factor-otplib@1.0.3@molecule/app-ui-showcase@1.0.3@molecule/api-emails-sendmail@1.0.6@molecule/api-ai-google@1.3.2@molecule/api-database-mysql@1.0.4@molecule/api-database-postgresql@1.0.4@molecule/api-uploads-s3@1.0.5@molecule/api-payments-stripe@1.2.4@molecule/api-ai-embeddings-molecule@1.1.2@molecule/api-ai-image-generation-molecule@1.1.1@molecule/api-ai-speech-molecule@1.1.2@molecule/api-ai-translation-molecule@1.1.2@molecule/api-content-moderation-molecule@1.1.2@molecule/api-ocr-molecule@1.1.2@molecule/api-web-search-molecule@1.1.2@molecule/api-ai-anthropic@1.3.2@molecule/api-ai-alibaba@1.1.3@molecule/api-ai-deepseek@1.0.6@molecule/api-ai-local@1.0.5@molecule/api-ai-minimax@1.1.3@molecule/api-ai-moonshot@1.1.3@molecule/api-ai-openai@1.4.3@molecule/api-ai-xai@1.0.6@molecule/api-ai-zhipu@1.2.2aiProvider also accepts a provider instance, for callers that route each request to a different ai provider.@molecule/api-ai-decisions-llm@1.2.0headers config hook, resolved before each request, for hosts whose auth expires or is not a bearer token.@molecule/api-ai-decisions-intern-decision@1.1.0@molecule/api-ai-decisions-jeff@1.1.0@molecule/api-ai-decisions-jev@1.1.0@molecule/api-ai-decisions-laya@1.1.0@molecule/api-resource-ai-models@1.11.0@molecule/api-resource-ai-models@1.12.0@molecule/api-resource-ai-models@1.12.0tool_result blocks with other content parts (an image riding a tool result — the screenshot tool's capture) no longer loses the non-tool parts on the Chat Completions path: they are emitted as a user message after the tool messages, matching what the Responses, Anthropic and Gemini transports already did. Previously any such part was silently dropped.@molecule/api-ai-alibaba@1.1.2@molecule/api-ai-deepseek@1.0.5@molecule/api-ai-local@1.0.4@molecule/api-ai-minimax@1.1.2@molecule/api-ai-moonshot@1.1.2@molecule/api-ai-openai@1.4.2@molecule/api-ai-xai@1.0.5@molecule/api-ai-zhipu@1.2.1@molecule/api-ai-xai@1.0.4@molecule/api-agent-transcript-autodetect@1.1.2rrweb-events.json in the test's output dir, and can be replayed deterministically through the rrweb player in the replay viewer's "DOM replay" mode — enabling programmatic DOM inspection that video cannot provide.@molecule/app-e2e-fixtures-default@1.1.3@molecule/api-agent-transcript-aider@1.0.1@molecule/api-agent-transcript-cline@1.0.1@molecule/api-agent-transcript-cursor@1.0.1@molecule/api-agent-transcript-gemini-cli@1.0.1@molecule/api-agent-transcript-opencode@1.0.1justify-between row (UserMenu left, ThemeToggle right) instead of stacking them vertically. Apps that pass <UserMenu /> and <ThemeToggle /> into the footer slot get a properly spaced bottom bar without a wrapper div.@molecule/app-ui-react@1.2.3@molecule/api-realtime-socketio@1.0.3side prop ('left' | 'right', default 'right'). Apps whose sidebar trigger sits on the left should pass side="left" so the panel opens adjacent to the trigger instead of always from the right viewport edge.@molecule/app-ui-react@1.2.4@molecule/api-ai-decisions-intern-decision@1.0.0@molecule/api-ai-decisions-jeff@1.0.0@molecule/api-ai-image-generation-vllm-omni@1.0.0@molecule/api-ai-speech-audio8@1.0.0@molecule/api-ai-speech-confucius4@1.0.0@molecule/api-ai-speech-llm@1.0.0@molecule/api-ai-speech-nemo-speech@1.0.0@molecule/api-ocr-teleocr@1.0.0ImageEditParams gains an optional images field for multi-reference edits; providers that do not support it keep using image alone.@molecule/api-ai-image-generation@1.1.0images field to decide() input for bonds whose model reads images; bonds that cannot see images throw when it is set.@molecule/api-ai-decisions@1.1.0@molecule/api-resource-ai-models@1.10.0transcribeStream, streamingAppendOnly), speaker diarization (diarize(), TranscribeParams.diarize/maxSpeakers) and speaker labels on transcription words and segments.@molecule/api-ai-speech@1.1.0harnessReaders is the list without the generic reader.@molecule/api-agent-transcript-autodetect@1.1.0onPhase callback reporting building and publishing transitions; the S3 bond reports publishing.@molecule/api-deploy-target-s3@1.1.0@molecule/api-deploy-target@1.1.0@molecule/api-ai-image-generation-molecule generates images through molecule.dev's hosted image-generation service and bills each image to your molecule project — no image-vendor account. It is an ordinary provider on the @molecule/api-ai-image-generation core, swappable with the OpenAI and Stability bonds without code changes. Every image passes molecule.dev's moderation classifier before it returns; quality is explicit (low/medium/high) so each served call has a deterministic per-image price.@molecule/api-ai-image-generation-molecule@1.1.0decide() images to the bonded ai provider as image content blocks, so vision chat models can answer questions about images.@molecule/api-ai-decisions-llm@1.1.0tap kind (about one paragraph) no longer carries a layout row into the next section, so that section's summary sits beside its own heading instead of under the previous section's.@molecule/app-margin-notes-html@1.0.7@molecule/api-agent-runtime-claude-code@1.1.1@molecule/api-agent-transcript-autodetect@1.1.1@molecule/app-margin-notes-html@1.0.8@molecule/api-agent-transcript-copilot-chat@1.0.1@molecule/api-agent-transcript-markdown-chat@1.0.1servername across transports), undici 7.29.0 → 7.30.0 (DoS via an unhandled WebSocket-permessage error). No API changes — the same createTransport/sendMail calls, the same webhook delivery and preview-fetch code, the same E2B Sandbox methods.@molecule/api-code-sandbox-e2b@1.2.3@molecule/api-emails-mailgun@1.0.5@molecule/api-emails-sendmail@1.0.5@molecule/api-emails-ses@1.0.6@molecule/api-webhook-http@1.0.3@molecule/api-webhook-queue@1.0.3@molecule/api-link-preview@1.0.3@molecule/api-oembed@1.0.3@molecule/api-smtp@1.0.4text.match(); behavior is unchanged. First release to carry the fixes listed under 1.0.2–1.0.5.@molecule/app-margin-notes-react@1.0.6decide() is given images, which Jev does not read, instead of answering from the text alone.@molecule/api-ai-decisions-jev@1.0.1decide() is given images, which Laya does not read, instead of answering from the text alone.@molecule/api-ai-decisions-laya@1.0.1accentCard({ tone }) and accentCardLabel({ tone }): a block with an inset colored bar down its leading edge and a heading in the bar's color, with semantic, primary and custom (--mol-accent) tones.@molecule/app-ui@1.3.4accentCard / accentCardLabel tokens; the Alert left-accent variant now renders the same inset rounded bar instead of a hard border-left.@molecule/app-ui-tailwind@1.2.5create() deletes the app it created when a later step fails (for example, the organization has reached its Machine limit), so a failed create no longer leaves an empty app, its addresses and its volume behind. An app that existed before the call is never deleted.@molecule/api-code-sandbox-flyio@1.2.2searchUi.help ("Search tips") replaces the retired searchUi.tips and searchUi.tipsHide keys, in all 79 languages.@molecule/app-locales-search-ui@1.0.2useKeyboardShortcut: register a shortcut with the bonded provider for the life of a component; mod+ expands to Ctrl and Command.@molecule/app-keyboard-shortcuts-react@1.0.1mol_auth presence hint, so an expired server-side session (or a DB reset) no longer re-fires a guaranteed-401 /users/me probe — and its console error — on every subsequent page load. The next real login re-sets the hint alongside the fresh cookie.@molecule/app-auth@1.1.2@molecule/app-mind-map-canvas-react@1.0.4@molecule/app-margin-notes-html@1.0.3@molecule/app-margin-notes-react@1.0.5@molecule/app-class-schedule-react@1.0.4@molecule/app-query@1.0.1field:value filters, phrases and exclusions.@molecule/app-client-search@1.0.1@molecule/app-query.@molecule/app-query-memory@1.0.1@molecule/app-ui-tailwind@1.2.3data-mol-id selector for every part of the layout, for tests.@molecule/app-margin-notes-html@1.0.6@molecule/app-keyboard-shortcuts-react@1.0.2@molecule/app-day-timeline-react@1.0.3@molecule/app-client-search@1.0.2@molecule/app-client-search-react@1.0.2@molecule/app-client-search.@molecule/app-client-search-minisearch@1.0.1@molecule/app-ide-react@1.19.2@molecule/app-margin-notes-html@1.0.4setupAppClientSearchMinisearch() wiring helper.@molecule/app-bonds-default-react@1.0.5@molecule/app-client-search: useClientSearchIndex, useClientSearch and useListNavigation.@molecule/app-client-search-react@1.0.1@molecule/app-query: useQuery, usePrefetch and intentPrefetchProps.@molecule/app-query-react@1.0.1@molecule/app-client-search-minisearch@1.0.2@molecule/app-search-ui-react@1.0.1@molecule/app-ui-tailwind@1.2.4@molecule/app-ui@1.3.3@molecule/app-query.@molecule/app-query-tanstack@1.0.1© {{year}} {{app}} in every locale. The "Built with Molecule.dev" credit is rendered by the app footer as a real link beside the copyright line — the old inline text made every footer read the credit twice.@molecule/app-locales-common@1.0.4X-goog-api-key request header instead of the URL query string, so the key no longer appears in access logs or error reports that record full URLs.@molecule/api-ai-translation-google@1.0.1@molecule/app-margin-notes-html@1.0.5afterField renders the consumer's own controls, such as tabs, directly under the input.@molecule/app-search-ui-react@1.0.2@molecule/app-ui@1.3.2@molecule/app-ui-react@1.2.2^[a-zA-Z0-9_-]+$) are mapped to a valid, stable id instead of failing the request with a 400.@molecule/api-ai-anthropic@1.3.1@molecule/app-locales-search-ui@1.0.1@molecule/app-clipboard-web@1.0.1@molecule/app-client-search-react@1.0.3moleculeSpinnerMarkSvg — the animated molecule spinner mark as a framework-agnostic SVG string (3-phase atom swap, swap-synced atom glints, seamless blue flow, currentColor mono mode), the single source every molecule.dev surface renders.@molecule/app-ui@1.3.0@molecule/api-agent-run@1.1.0@molecule/api-agent-runtime-claude-code@1.1.0@molecule/api-entitlements@1.1.0openUrl now navigates only to http(s) or relative targets — a javascript:, data: or other scriptable scheme is refused with a console.warn and no navigation.@molecule/app-utilities@1.0.3href carries a scriptable scheme (javascript:, data:, …) renders as inert text instead of an anchor.@molecule/app-ide-react@1.19.1var() colors and left the gradient flat.@molecule/app-ui@1.3.1borderL and alertLeftAccent class-map tokens, implement the previously-dropped Alert variant="left-accent" (status-colored 4px leading bar, React + Vue), and change the button icon/spinner spacing tokens from mr-2/ml-2 to shrink-0 (the button's own gap already provides spacing — the stacked margins made icons sit off-center).@molecule/app-ui-tailwind@1.2.2@molecule/app-ui@1.2.1@molecule/app-ui-react@1.2.1@molecule/app-ui-vue@1.0.3<header> elements from shared shells — the auth brand header and legal ContentPageShell hero now render <div>/<section> (apps with their own top bar rendered two banners), the billing PricingPage heading/tier cards no longer use <header>, and AuthShellCardColumn gains min-w-0 so wide auth forms no longer push pages past the mobile viewport.@molecule/app-auth-brand-header-react@1.0.3@molecule/app-auth-shell-react@1.0.3@molecule/app-billing-react@1.0.4@molecule/app-legal-pages-react@1.1.3wait_for_task (or exec_command with tail) for a task's log output — the previous text suggested read_file, which cannot reach /tmp under the default path guards, so the read always failed.@molecule/api-ai-tools@1.4.2MOLECULE_SERVICES_URL at construction with a clear error, because the project API key rides as a Bearer token on every call — only https URLs (or http to localhost / 127.0.0.1 for a locally running services instance) are accepted.@molecule/api-ai-embeddings-molecule@1.1.1@molecule/api-ai-speech-molecule@1.1.1@molecule/api-ai-translation-molecule@1.1.1@molecule/api-content-moderation-molecule@1.1.1@molecule/api-ocr-molecule@1.1.1@molecule/api-web-search-molecule@1.1.1limit query parameter into 1..500 — an oversized limit previously passed through unbounded to the store query (and the device query allowed up to 10000).@molecule/api-resource-activity-feed@1.0.3@molecule/api-resource-comment@1.0.4@molecule/api-resource-device@1.0.3@molecule/api-resource-follow@1.0.4@molecule/api-resource-message@1.0.4@molecule/api-resource-share@1.0.3@molecule/api-resource-template@1.0.3@molecule/api-resource-thread@1.0.3@molecule/api-resource-workspace@1.0.3@molecule/app-ide-react@1.19.1+ or -) with a clear error, instead of passing them through to the traineddata loader.@molecule/api-ocr-tesseract@1.1.1<, & or quote character in a translated string renders as text instead of becoming markup.@molecule/app-pwa-default@1.0.4@molecule/app-i18n@1.0.3moleculeSpinnerMarkSvg mark instead of its own inline copy, so it matches the IDE spinner and the deployed-app attribution badge exactly.@molecule/app-ide-react@1.19.1@molecule/api-secrets-molecule@1.0.3@molecule/api-ai-tools@1.4.0@molecule/api-web-search@1.1.0@molecule/api-ocr@1.1.0@molecule/api-ocr-molecule@1.1.0@molecule/api-ai model, hosted or self-hosted.@molecule/api-ocr-llm@1.1.0@molecule/api-ocr-tesseract@1.1.0@molecule/api-web-search-molecule@1.1.0@molecule/api-web-search-brave@1.1.0@molecule/app-margin-notes-html@1.0.1@molecule/app-margin-notes-react@1.0.3@molecule/app-margin-notes-html@1.0.2@molecule/api-ai-tools@1.4.1@molecule/api-ai-tools@1.4.1rejectsTemperature, and document toolsRequireReasoningOff as applying to tool-less calls only.@molecule/api-resource-ai-models@1.9.1@molecule/api-ai-tools@1.4.1@molecule/api-ai-google@1.3.1@molecule/api-ai-openai@1.4.1@molecule/app-margin-notes-react@1.0.4@molecule/api-ai-summarization-llm@1.1.1@molecule/api-ai-tools@1.4.1ContentClassifierProvider and setClassifier / requireClassifier: a separate slot for providers that score content without storing reports.@molecule/api-content-moderation@1.1.0TokenUsage.webSearchRequests, the number of provider-run web searches billed per search on top of tokens; each AI bond reports the searches its provider ran.@molecule/api-ai-anthropic@1.3.0@molecule/api-ai-google@1.3.0@molecule/api-ai-openai@1.4.0@molecule/api-ai-zhipu@1.2.0@molecule/api-ai@1.3.0webSearchPricePer1k to price web searches; enable web search on OpenAI models and remove it from Zhipu GLM models, where it never runs alongside function tools.@molecule/api-resource-ai-models@1.9.0@molecule/app-ui-react@1.2.0@molecule/api-ai-summarization-llm@1.1.0@molecule/api-ai-summarization@1.1.0@molecule/api-content-moderation-molecule@1.1.0@molecule/api-content-moderation-openai@1.1.0@molecule/api-ai-embeddings-molecule@1.1.0@molecule/api-ai-translation-madlad@1.1.0@molecule/api-ai-translation-bergamot@1.1.0@molecule/api-ai-speech-molecule@1.1.0@molecule/api-ai model, with placeholder protection and automatic retries.@molecule/api-ai-translation-llm@1.1.0@molecule/api-ai-translation-molecule@1.1.0ConfirmDialog, ConfirmButton and Switch from @molecule/app-ui-react instead of window.confirm and hand-built controls.@molecule/app-image-gallery-editor-react@1.0.3@molecule/app-node-editor-panel-react@1.0.4@molecule/app-settings-panel-react@1.0.4setProvider() registers the ai-embeddings bond, and a second provider can be bonded by name.@molecule/api-ai-embeddings-openai@1.0.3setProvider() registers the ai-speech bond, and a second provider can be bonded by name.@molecule/api-ai-speech-openai@1.0.3edit_file results now include the edited regions as they read after the edit, with line numbers and the file's total line count; write_file results include the line count and, for a small file, its numbered lines.@molecule/api-ai-tools@1.3.0ConfirmButton (two-step confirm for destructive actions); Icon renders a placeholder instead of throwing for an unknown name; theme toggle and user menu triggers meet a 40px touch target.@molecule/app-ui-react@1.1.0gpt-6-astra.@molecule/api-resource-ai-models@1.8.0hiddenBelow(breakpoint) and hiddenFrom(breakpoint) to the ClassMap, for swapping desktop and phone surfaces in CSS.@molecule/app-ui-nativewind@1.2.0@molecule/app-ui-tailwind@1.2.0@molecule/app-ui@1.2.0TranslateParams.protect: literal substrings (such as {{count}} placeholders) that providers must return unchanged.@molecule/api-ai-translation@1.1.0e2eRunnerDefaults(), the Playwright runner settings (workers, parallelism, retries, failure cap, per-test timeout) for the current environment, to spread into playwright.config.ts.@molecule/app-e2e@1.2.0/v1/responses) on OpenAI's own endpoint, which lets reasoning models use function tools with reasoning enabled and forwards serverTools such as web_search; other base URLs keep /v1/chat/completions, and the new api option overrides the choice.@molecule/api-ai-openai@1.3.0protect, escape &/</> for XML requests and decode entities in results, retry 5xx responses, and include the HTTP status on errors.@molecule/api-ai-translation-deepl@1.1.0create() destroys the sandbox when its egress policy fails to apply, and verifyEgress() retries destroying its probe sandbox and reports one it could not remove.@molecule/api-code-sandbox-e2b@1.2.2Switch has a 40×40 hit area centred on its track; the visual size is unchanged.@molecule/app-ui-tailwind@1.2.1@molecule/app-margin-notes-react@1.0.2cn() resolves conflicting classes by order.@molecule/app-styling@1.0.3@molecule/api-text-provenance-overlap@1.0.1@molecule/api-text-provenance@1.0.1@molecule/api-agent-transcript-autodetect@1.0.1@molecule/api-agent-transcript@1.0.1@molecule/app-ui ^1.2.0, which provides the hiddenBelow ClassMap member the layout uses.@molecule/app-margin-notes-react@1.0.1@molecule/app-settings-panel-react@1.0.3setFont(font, { basePath }) loads local font faces from <basePath>fonts/<file>, so a site served under a sub-path (Vite base: '/blog/') no longer 404s every face at /fonts/…. When the option is omitted the document's <base href>, then import.meta.env.BASE_URL, then / apply. resolveFontBasePath() is exported.@molecule/app-fonts@1.1.0write_file and edit_file parse the file they just changed (node --check, JSON.parse, or esbuild for TypeScript) and return the syntax error in the same result as syntaxError, so an edit that breaks a file is reported while the edit is still in front of the agent instead of at the next build.@molecule/api-ai-tools@1.2.0gpt-6-sol ($2/$10) and gpt-6-luna ($0.10/$0.50). The GPT-5.6 models are superseded by them and stay priced but are no longer selectable.@molecule/api-resource-ai-models@1.7.0rejectsForcedToolChoice and rejectsTemperature to model definitions and sets them on the Claude, Kimi and other models whose providers reject a forced tool choice or a caller-chosen temperature. deepseek-v4-pro is offered again.@molecule/api-resource-ai-models@1.7.0@molecule/api-resource-ai-models@1.7.0peakPricing.excludedDatesUtc), and the DeepSeek models exclude Chinese public holidays, which DeepSeek bills off-peak. peakPricing.rule records the provider's own peak-hours sentence and where it is published.@molecule/api-resource-ai-models@1.7.0@molecule/app-ai-models@1.4.0@molecule/app-ide-react@1.19.0@molecule/app-locales-ide@1.10.0claude-opus-5-5 (was claude-opus-5) when defaultModel is not set.@molecule/api-ai-anthropic@1.2.0gpt-6-luna (was gpt-5.6-luna) when defaultModel is not set.@molecule/api-ai-openai@1.2.0edit_file reports an edit whose change is already in the file as applied, instead of failing with "old_string not found".@molecule/api-ai-tools@1.2.1@molecule/api-ai-tools@1.2.1ide.toolCall.stillRunning translation key.@molecule/app-locales-ide@1.9.3BackgroundTasksStrip follows the package lint rules; no behavior change.@molecule/app-ide-react@1.18.1@molecule/api-resource-ai-models@1.7.0peakPricing.excludedDatesUtc), and the DeepSeek models exclude Chinese public holidays, which DeepSeek bills off-peak. peakPricing.rule records the provider's own peak-hours sentence and where it is published.@molecule/app-ide-react@1.19.0exec_command accepts run_in_background: the command is detached and the tool returns a task id, a log path and an exit-code path immediately, so a long test suite or build no longer has to fit inside the command timeout.@molecule/api-ai-tools@1.1.0read_file now accepts paths (an array) as well as path, returning one entry per file with its own content or error. An agent that issues one tool call per round-trip pays a full round-trip per file; batched, a project survey costs one call per 25 files.@molecule/api-ai-tools@1.1.0read_file takes offset/limit to return a line window (a negative offset counts from the end, like tail), and search_files takes contextLines to return surrounding lines like grep -C. Both report their position so the next window can be requested.@molecule/api-ai-tools@1.1.0cmd for command, file for path, body for content, camelCase for snake_case) and return an actionable error instead of an internal TypeError when a required parameter is missing. exec_command now also accepts an optional timeout, clamped to the tool's ceiling and reported when a larger one is asked for. New exports: guardAITool, guardToolExecute, normalizeToolInput.@molecule/api-ai-tools@1.1.0resolveE2EProviderName() now picks playwright when a Playwright browser is installed there and preview only when none is; adds isMoleculeSandbox(), hasInstalledBrowser() and playwrightBrowsersPath().@molecule/app-e2e@1.1.0wait_for_task tool: waits for a command started with run_in_background and returns its output and exit code in one call, so an executor that needs the result no longer has to sleep and re-read the log.@molecule/api-ai-tools@1.1.0molecule:viewport from the preview bridge, so page.setViewportSize actually resizes the frame. The panel already read a requested size for the iframe but nothing ever set it, so every viewport request was answered with the unchanged size — phone-width layouts could not be measured from a build.@molecule/app-ide-react@1.18.0background_task stream event carries each detached command or subagent, useChat exposes them as backgroundTasks, and the chat panel shows what is running, for how long, and how each one ended.@molecule/app-ai-chat@1.5.0@molecule/app-ide-react@1.18.0@molecule/app-react@1.6.0connect() fails within 5 s when no preview page is attached, naming the cause and the MOL_E2E_PROVIDER=playwright alternative, and later connects in the same run fail at once (a marker beside the hub's token file) instead of waiting again per test.@molecule/app-e2e-preview@1.0.8edit_file now finds a block whose old_string differs from the file only in spacing next to punctuation (a missing space after a comma, for example), as it already did for indentation; uniqueness is still required and the replacement is applied verbatim.@molecule/api-ai-tools@1.1.0exec_command refuses, without running, a command that declares a longer budget than the tool's ceiling _and_ pipes its output into tail/grep — that combination can only spend the whole budget and return nothing. A command that declares no budget, or whose partial output would survive, still runs as before.@molecule/api-ai-tools@1.1.0find_files and search_files accept @ in a glob, so a scoped package path like node_modules/@molecule/app-ui/* is no longer refused.@molecule/api-ai-tools@1.1.0read_file returns at most ~80 KB per file when no window is asked for — the first window plus a note on how to read the rest — instead of a whole multi-megabyte file; a batched read is bounded to ~200 KB.@molecule/api-ai-tools@1.1.0read_file's window note now says when the whole file fits in one call, or names the exact next window; its description points @molecule package docs at read_molecule_doc.@molecule/api-ai-tools@1.1.0wait_for_task reports a background command as stuck — with its pid, so it can be killed — once five minutes of waiting have accrued on it without an exit, and refuses to wait on it again.@molecule/api-ai-tools@1.1.0USER, so an unrepaired import left the executor unable to write files it had just received — npm install could not touch node_modules and Vite could not create its temp config, so the dev server never started. A caller cannot fix this afterwards: an ordinary exec runs as that same non-root user and chown is refused.@molecule/api-code-sandbox-docker@1.1.3@molecule/app-react@1.6.0@molecule/app-e2e-fixtures-default@1.1.2gpt-6-astra is not in the catalog.@molecule/api-resource-ai-models@1.6.3PLAYWRIGHT_BROWSERS_PATH); the missing-browser error now says so instead of pointing at the preview bond.@molecule/app-e2e-playwright@1.0.2cm.button(); none is hand-styled. Visual parity with the design system, no API change.@molecule/app-adjustment-slider-react@1.0.3@molecule/app-feature-audio-effects-rack-react@1.0.3@molecule/app-feature-audio-mixer-react@1.0.3@molecule/app-audio-recorder-react@1.0.3@molecule/app-billing-react@1.0.3@molecule/app-carousel-react@1.0.3@molecule/app-feature-chapter-list-react@1.0.3@molecule/app-chatbot-tester-react@1.0.3@molecule/app-class-schedule-react@1.0.3@molecule/app-color-swatch-picker-react@1.0.3@molecule/app-emoji-reactions-react@1.0.3@molecule/app-faceted-search-react@1.0.3@molecule/app-file-dropzone-react@1.0.3@molecule/app-flow-canvas-react@1.0.3@molecule/app-inbox-row-react@1.0.3@molecule/app-layer-panel-react@1.0.3@molecule/app-mind-map-canvas-react@1.0.3@molecule/app-node-editor-panel-react@1.0.3@molecule/app-pricing-page-react@1.0.3@molecule/app-quiz-card-react@1.0.3@molecule/app-rating-form-react@1.0.3@molecule/app-slide-thumbnail-react@1.0.3@molecule/app-stage-timeline-react@1.0.3@molecule/app-storefront-chrome-react@1.0.3@molecule/app-survey-question-react@1.0.3@molecule/app-tab-filter-react@1.0.3@molecule/app-transactions-table-react@1.0.3@molecule/app-vote-cluster-react@1.0.3@molecule/app-webhook-inspector-react@1.0.3@molecule/app-locales-carousel@1.0.3@molecule/app-locales-ide@1.9.2@molecule/app-locales-rating-form@1.0.3@molecule/app-react@1.6.0toolChoice to the model's own choice when thinking is enabled. DeepSeek rejects the combination with 400 Thinking mode does not support this tool_choice, which fails the whole request; the thinking setting is kept and the tool nudge is degraded instead.@molecule/api-ai-deepseek@1.0.4project.created event now carries the template and the selected packages.@molecule/api-resource-project@1.0.3@molecule/api-emails-mailgun@1.0.4@molecule/api-emails-sendmail@1.0.4@molecule/api-emails-ses@1.0.5edit_file's old_string does not match, the error says which kind of miss it was: none of its lines are in the file (already applied, or wrong file — do not retry the same string) versus present but not distinctive enough to locate. The old message advised re-reading and copying exact text in both cases, which is wrong advice for the first.@molecule/api-ai-tools@1.1.0127.0.0.1 (loopback) by default instead of every interface — it serves fixture data with permissive CORS, so LAN-wide exposure is now an explicit opt-in via host: '0.0.0.0' in the config or --host on the CLI. The running MockServer also reports the bound address as host.@molecule/api-mock-server@1.1.0host:port only) before building API URLs, and repo paths are URL-encoded per segment — a host or path carrying URL structure (/, ?, @, scheme) is rejected instead of being interpolated into a token-bearing request URL.@molecule/api-git-provider-gitea@1.0.4@molecule/api-git-provider-github@1.0.4@molecule/api-git-provider-gitlab@1.0.4@molecule/api-git-provider-smolforge@1.0.4create() now re-resolves unit prices server-side when the data store exposes a products table: catalog prices (honouring product_variants overrides) compute subtotal/total and are persisted on the order items, client-supplied items[].price is discarded, and items referencing products missing from the catalog are rejected with 400. When no products table exists the previous behavior (body prices) is unchanged; discount/tax/shipping remain client-supplied in both modes.@molecule/api-resource-order@1.1.0@molecule/app-locales-ide@1.9.0{ label, description?, preview? } objects and multiSelect — descriptions render under labels, previews side-by-side (inline on narrow screens), multi-select confirms as one answer. New dedicated tool cards: the working-plan checklist (update_task_list), the plan-review approval layout (plan name, step count, checklist preview, prominent approve/request-changes CTAs), and spawn_agent subagents (explore/judge badge, judge VERDICT: PASS/FAIL banner with issues).@molecule/app-ide-react@1.17.0/etc/mol present, or VITE_HOST set) the config keeps the wide-open posture (0.0.0.0, allowedHosts: true, fs.strict: false) the IDE preview depends on. Everywhere else — a developer machine running npm run dev — it now defaults to host: 'localhost', Vite's Host allowlist (localhost variants; extend via VITE_ALLOWED_HOSTS=a,b, disable with *), and Vite's strict fs confinement, closing the LAN-exposure / DNS-rebinding / /@fs/ read triad the old defaults shipped.@molecule/app-vite-config-default@1.1.0AWS_SES_INBOUND_TOPIC_ARN (exact topic ARN match) or the new AWS_SES_INBOUND_ACCOUNT_ID (12-digit AWS account pin, read from the signing-cert URL or the signed TopicArn). Without either, verification throws a config.notConfigured error instead of accepting any validly-signed SNS message — a valid AWS signature alone only proves some AWS account published the notification.@molecule/api-emails-inbound-ses@1.1.0createStream()/transcode() are now validated as local absolute file paths — URLs and any scheme:-prefixed value are rejected before ffmpeg runs, closing an SSRF/file-read primitive when apps forward user-supplied strings. The ffmpeg protocol whitelist is trimmed to local protocols (file,crypto); fetch remote media yourself and pass a Buffer.@molecule/api-media-streaming-hls@1.1.0role=page WebSocket upgrades are now gated like the driver side: a same-origin Origin check (the shipped page client connects to its own location.host) or the hub token is required — a cross-origin site on a dev machine can no longer connect as a page and receive/spoof driver commands and results.@molecule/app-e2e-preview@1.0.6textToValue() now HTML-escapes the source text when building its .html output, so markup in the input (e.g. <script>/<img onerror>) arrives inert in the stored HTML instead of becoming a stored-XSS payload. The plain text field (and Quill delta) is unchanged.@molecule/app-rich-text-quill@1.0.3@molecule/app-rich-text@1.0.3app:machine-style ids pass; anything carrying path structure is rejected). A plain-TCP daemon endpoint selected by the ambient DOCKER_HOST env is refused in production unless MOL_DOCKER_ALLOW_PLAIN_TCP=1 is set (honored with a loud warning); explicit config.host endpoints are unaffected.@molecule/api-code-sandbox-docker@1.1.1javascript:) renders as plain text.@molecule/app-ide-react@1.17.0/etc/mol/… (the molecule platform secrets directory — e.g. cat /etc/mol/env, base64 < /etc/mol/env), closing an env-dump gap alongside the existing /proc//etc/environment rules. Building tools over a LOCAL-HOST backend with pathGuards/symlinkGuards disabled now logs a loud warning naming the exact gaps; defaults are unchanged.@molecule/api-ai-tools@1.0.8execFile with an argv array (no shell) instead of an interpolated shell string, and environment slugs are validated ([a-z0-9-] only) before any use — closing a command-injection path for branch-name-derived slugs.@molecule/api-staging-docker-compose@1.0.30o600, directory 0o700), and the legacy-location migration chmods the copied private key down as well.@molecule/api-jwt@1.0.2appName interpolated into legal HTML (content page, legal modals, footer modals) is now HTML-escaped before it reaches dangerouslySetInnerHTML, so a markup-carrying app name renders inert instead of executing inside the legal content.@molecule/app-footer-react@1.0.2@molecule/app-legal-pages-react@1.1.1limit query parameter into 1..500 — an oversized limit previously passed through unbounded to the store query.@molecule/api-resource-bookmark@1.0.2@molecule/api-resource-comment@1.0.2@molecule/api-resource-follow@1.0.2@molecule/api-resource-message@1.0.2@molecule/api-resource-review@1.0.2@molecule/api-trash@1.0.2@molecule/api-resource-version-history@1.0.2@molecule/api-queue-memory@1.0.2__proto__/constructor/prototype keys at every depth, so a translations source carrying a JSON-parsed own __proto__ property can no longer write through to Object.prototype.@molecule/api-i18n@1.0.2/test card now names the test on screen while a run is in flight — the runner's own group and title with a live per-file tally — and a running file can be skipped without ending the run; a skipped file reads Skipped, never as a pass. The executor's own long-running command gains the same Skip.@molecule/app-ide-react@1.16.0@molecule/app-locales-ide@1.8.0read_file and edit_file no longer report a read that obtained no bytes as a successful read of an empty file: an empty result is checked against the file's real size, retried once when the file has content, and returned as an actionable error when the read genuinely failed or the size could not be confirmed.@molecule/api-ai-tools@1.0.7{{count}} resolves instead of rendering as literal text.@molecule/api-locales-user-payments@1.0.2@molecule/app-locales-audio-recorder@1.0.2@molecule/app-locales-battery@1.0.2@molecule/app-locales-class-schedule@1.0.2@molecule/app-locales-common@1.0.2@molecule/app-locales-feature-audio-mixer@1.0.2@molecule/app-locales-feature-chapter-list@1.0.2@molecule/app-locales-feature-piano-roll@1.0.2@molecule/app-locales-feature-track-lane@1.0.2@molecule/app-locales-feature-video-scrubber@1.0.2@molecule/app-locales-feature-video-timeline@1.0.2@molecule/app-locales-file-card@1.0.2@molecule/app-locales-footer@1.0.2@molecule/app-locales-gradebook@1.0.2@molecule/app-locales-health@1.0.2@molecule/app-locales-heatmap@1.0.2@molecule/app-locales-loyalty-tier-badge@1.0.2@molecule/app-locales-notifications-page@1.0.2@molecule/app-locales-now-playing-bar@1.0.2@molecule/app-locales-react-native-ui@1.0.2shepherd.js to 15.3.0 and mailparser to 3.9.28, the first releases of each that accept deepmerge-ts 8, clearing the stack-exhaustion advisory GHSA-ggr8-5vv4-36mx from both dependency chains.@molecule/api-emails-inbound-ses@1.0.2@molecule/app-tour-shepherd@1.0.2page.setViewportSize() now survives a navigation: the size is re-applied after every goto, reload, goBack and goForward, so a spec that sets a phone width keeps measuring at that width. The re-apply warns rather than throwing when the host does not honour it, and page.viewportSize() reports the size actually in effect.@molecule/app-e2e-fixtures-default@1.1.0listTests/runTests); the locale bond gains the ide.tests.* strings.@molecule/app-ide-react@1.14.0@molecule/app-locales-ide@1.6.0billingAction and upgradeTier, and the IDE passes them together with limitType to buildUpgradeCta, so the host renders the call-to-action that matches the user's billing state instead of a generic upgrade button.@molecule/app-ai-chat-http@1.2.0@molecule/app-ai-chat@1.4.0@molecule/app-ide-react@1.13.0@molecule/app-react@1.5.0/test card's failed rows gain a "Fix with Synthase" action (and a batch action in the header) that hands the failing file and its runner output to the chat; runner output starts collapsed behind Show/Hide output; every action renders as a filled button, and a design guard test keeps command-card actions from shipping as text links.@molecule/app-ide-react@1.15.0@molecule/app-locales-ide@1.7.0page.setViewportSize() waits up to 4 seconds for the preview host to resize the frame before reporting the size it got; the real IDE resizes well after the old 1.5-second budget, which failed every phone-width spec.@molecule/app-e2e-preview@1.0.5systemDefault option: with no persisted choice, start on the theme whose mode matches the OS preference; getServerTheme() reports defaultTheme for server and build-time renders.@molecule/app-theme-css-variables@1.0.2ThemeProvider.getServerTheme() (optional): the theme a render without a browser produces, so a hydrating client can render the markup it was sent before switching to the live theme.@molecule/app-theme@1.0.2useTheme() hydrates with the provider's server theme and switches to the live one after, so a persisted or OS-preferred theme no longer causes a hydration mismatch on prerendered pages.@molecule/app-react@1.4.3us region for deepseek-flash (DeepSeek V4.1 Flash on the DeepInfra re-host, with its rate card) beside the native default.@molecule/api-resource-ai-models@1.6.1@molecule/app-ide-react@1.12.1@molecule/app-ide-react@1.12.1ChatPanel timestamps: off by default (your own messages and critical events still show one), shown on every message and event with /timestamps on or setChatTimestampsVisible; labels are minute-precise ("5 minutes ago", then "9:25 AM", then "Sep 12, 9:25 AM") and advance each minute, a run of identical labels shows once, and custom cards can set critical: true.@molecule/app-ide-react@1.12.0/timestamps confirmations.@molecule/app-locales-ide@1.5.0exec_command accepts commandBudgetMs: a command that overruns is stopped under timeout and its output so far is returned instead of nothing.@molecule/api-ai-tools@1.0.4exec_command runs the whole anchored command under the budget (commandBudgetMs) inside the sandbox backend, so a sourced environment still reaches it; exit 124 hands back the partial output with an explanatory error.@molecule/api-ai-tools@1.0.5exec_command: when a command stops at the tool budget with a | tail/| head pipe, the error explains that the pipe held the output back and says to run it without the pipe.@molecule/api-ai-tools@1.0.6@molecule/app-e2e-preview@1.0.3/blog/) connects to the hub instead of loading index.html as its client script.@molecule/app-e2e-preview@1.0.4test and expect now come from @molecule/app-e2e, so the same specs run on real browsers locally and against the live preview inside a molecule sandbox.@molecule/app-e2e-fixtures-default@1.0.2molecule:viewport request from the previewed page (an e2e spec's page.setViewportSize), sizing the frame like a device preset until a device is picked again.@molecule/app-ide-react@1.11.3deepseek-flash — multimodal, cn-native, 1M context) as the go-forward flash id and free-tier default; deprecates deepseek-v4-pro (routes to V4.1 Flash at Flash prices from 2026-09-14 upstream) and the retired deepseek-v4-flash id, whose native card now carries the V4.1 rates; removes gpt-5.6-luna's free-tier region carve-out.@molecule/api-resource-ai-models@1.6.0ChatPanel: a pending ask_user whose tool-call block was never persisted still renders from the record — a question the user cannot see parks the turn with no way forward.@molecule/app-ide-react@1.11.2@molecule/api-emails-mailgun@1.0.2@molecule/api-emails-sendmail@1.0.2@molecule/api-emails-ses@1.0.3@molecule/api-smtp@1.0.2@molecule/api-image-sharp@1.0.2defaultModel follows the go-forward deepseek-flash id (was the retired deepseek-v4-flash).@molecule/api-ai-deepseek@1.0.2appLayout no longer pads the top by 55px (the shell's header renders in flow, so the pad cleared a header that never overlapped) and headerBar carries no background or shadow by default — apps that want a chrome bar pass their own header classes.@molecule/app-ui-tailwind@1.1.1PreviewPanel: a pending AI navigation command is re-posted when the preview iframe's load event fires, so a navigate can no longer outlive its reply window in a backgrounded tab (the retry interval and the bridge's frames are timer-scheduled and throttled there; the load event is not).@molecule/app-ide-react@1.11.1code, blockquote text, captions, and kbd hints inside cm.prose content now use theme tokens — they previously kept the typography plugin's light-theme ink and were nearly unreadable on dark backgrounds.@molecule/app-ui-tailwind@1.1.2/cost card now names the allowance window the host reports (allowanceWindow), so a monthly allowance reads "this month's" rather than "today's", and reset countdowns beyond a day render as "in about N days" instead of "tomorrow".@molecule/app-ide-react@1.11.0@molecule/app-locales-ide@1.4.0exec_command no longer blocks env -u KEY cmd, env KEY=value cmd or env -i cmd as environment dumps; only a bare, piped or redirected env is.@molecule/api-ai-tools@1.0.3PreviewPanel: a raw document the user clicks to inside the preview (a feed, a JSON file, llms.txt) is shown as content instead of being covered by the "preview is blank" notice; the bridge reports the link click as a navigation intent.@molecule/app-ide-react@1.10.2useChat: merging the server's history no longer keeps the optimistic copy of a message the server already holds, so a conversation's first message renders once.@molecule/app-react@1.4.1useChat: the server's persisted mode is applied on every history load and reconnect, including execute, so a tab that missed the live plan-to-build switch no longer stays in plan mode.@molecule/app-react@1.4.2@molecule/api-git-provider@1.0.4e2e/ suite from vitest collection (test.exclude), so npm test in an app runs only its unit tests.@molecule/app-vite-config-default@1.0.3@molecule/api-resource-ai-models@1.5.1@molecule/api-resource-ai-models@1.5.0@molecule/app-ide-react@1.10.1@molecule/api-ai-google@1.2.1claude-fable-5-1 (Anthropic's current latest; same $10/$50 per MTok as claude-fable-5, with $0.25/MTok cache reads) and marks claude-fable-5 as legacy. claude-sonnet-5 is now listed at its standard $2/$10 rate. Model ids with a dash-separated minor version (e.g. claude-fable-5-1) now parse as a newer generation of their family instead of a sibling.@molecule/api-resource-ai-models@1.4.0ChatProvider.sendSideMessage (optional, implemented by the HTTP bond on an independent request lifecycle) and a sideChannel option on useChat's sendMessage. A side-channel message goes out immediately even while a turn is streaming — it never queues behind the active turn, never aborts the live stream, and never disrupts remote-turn tracking. Callers fall back to the normal send path on providers without side-channel support.@molecule/app-ai-chat-http@1.1.0@molecule/app-ai-chat@1.3.0@molecule/app-react@1.4.0onRestartBackend escalation hook to the preview panel: when the backing server answers probes but the app has not confirmed a render for minutes and an automatic reload was already tried, the panel asks the host to restart the backing dev server — at most once per broken episode, with a long cooldown, never during a build. This recovers failure classes a document reload cannot (e.g. module failures cached against the dev server's immutable versioned URLs). Hosts that omit the prop are unaffected.@molecule/app-ide-react@1.10.0peakPricing.windows[].daysOfWeekUtc), and the DeepSeek entries now carry the Monday-through-Friday qualifier their rate card publishes, so weekend hours inside those windows no longer meter at the peak multiplier. The /models picker labels a weekday-only window with the days it applies on.@molecule/api-resource-ai-models@1.4.0@molecule/app-ai-models@1.3.0peakPricing.windows[].daysOfWeekUtc), and the DeepSeek entries now carry the Monday-through-Friday qualifier their rate card publishes, so weekend hours inside those windows no longer meter at the peak multiplier. The /models picker labels a weekday-only window with the days it applies on.@molecule/app-ide-react@1.10.0@molecule/app-ide-react@1.10.0@molecule/app-ide-react@1.10.0@molecule/app-ide-react@1.10.0@molecule/app-ide-react@1.10.0@molecule/app-ide-react@1.10.0@molecule/app-ide-react@1.10.0ShareLinkManager accepts a refreshSignal prop so a host's live-update channel can reload the link list in place, and the ChatPanel's settings re-read signal now refreshes the full agent-behavior bag (per-mode models, effort, regions, max tool loops, auto-fix, auto-approve) — so pickers and toggles reflect changes another collaborator just made instead of holding stale values.@molecule/app-ide-react@1.9.0@molecule/api-resource-ai-models@1.3.0/effort now opens a selectable level picker (like /model): bare /effort lists the target mode's model-native levels with current/default indicators, live typing filter, a mode selector, and keyboard navigation. /effort ? keeps the textual status view; /effort <level> still sets directly.@molecule/app-ide-react@1.9.1ide.chat.settings.effort.label ("Reasoning effort") translation in all 79 languages.@molecule/app-locales-ide@1.3.1@molecule/app-react@1.3.1@molecule/app-ide-react@1.9.1@molecule/app-ide-react@1.9.1canShare to ChatPanel and canManage/canCreate/canRevoke to ShareModal so hosts that gate share-link management above the edit role can hide the /share command, header share button, and modal controls instead of surfacing requests the backend rejects; read-only viewers no longer trigger a settings write when their selected model is delisted. The locale bond adds the matching ide.chat.share.notAllowed message in all languages.@molecule/app-ide-react@1.7.0@molecule/app-locales-ide@1.2.0toolChoice ('required' and named-tool forms) as OpenAI-compatible tool_choice. MiniMax and Moonshot family gates now key on the canonical model id (a modelMap-translated upstream id never matched, so re-hosted requests lost their thinking rules); MiniMax forwards image input for the natively-multimodal M3 and disables its thinking via chat_template_kwargs on hosts that ignore the thinking param; Alibaba pairs a forced tool choice with an explicit thinking-off (DashScope rejects forced tool_choice in thinking mode).@molecule/api-ai-alibaba@1.1.0@molecule/api-ai-minimax@1.1.0@molecule/api-ai-moonshot@1.1.0@molecule/api-ai-zhipu@1.1.0useChat.applyRemoteEvent ingestion path, with a readOnly watcher mode for viewers and a progress-preserving history reconcile. Agent-setting changes (model, effort, fast mode, max tool loops, processing region, auto-fix, auto-approve) surface as shared, attributed transcript cards through the new setting card kind.@molecule/app-ai-chat@1.2.0@molecule/app-ide-react@1.8.0@molecule/app-react@1.3.0@molecule/app-locales-ide@1.3.0{ type: 'web_search', web_search: {} }) instead of the abstract { type, name } marker, which the API rejects. New supportsServerTools: false config drops server tools for OpenAI-compatible hosts that don't serve them, so tool-carrying requests succeed there.@molecule/api-ai-zhipu@1.1.0signature replay token. The Google bond captures Gemini 3.x's part-level thoughtSignature on function calls and echoes it on replayed calls — without it, Gemini rejects the second request of any tool round-trip (400 "Function call is missing a thought_signature"). The Google bond also sends thinking.effort as thinkingLevel (previously the effort value was silently ignored and a fixed token budget was sent), and forwards the google_search server tool with includeServerSideToolInvocations when function tools ride along.@molecule/api-ai-google@1.2.0@molecule/api-ai@1.2.0codeExecutionToolType to the current code_execution_20260521 (the previous value was a beta-header date, not a tool type) and remove webSearchToolType from OpenAI entries — the chat-completions endpoint the OpenAI provider uses has no such tool type, so advertising it surfaced a capability that could never work.@molecule/api-resource-ai-models@1.2.7{ code, error }) so upstream 400 details are logged instead of a bare "HTTP 400", and surface an attachment-specific message when an image is rejected for size instead of the generic invalid-request text.@molecule/api-ai-xai@1.0.2ChatParams.extraBody — extra provider-native request-body params (e.g. reasoning_effort, enable_thinking, top_k) shallow-merged into the outgoing request as a base, with the bond's structural fields (model, messages, tools, stream, token limit) always winning. The Gemini bond merges a nested generationConfig into its own rather than replacing it.@molecule/api-ai-anthropic@1.1.0@molecule/api-ai-google@1.1.0@molecule/api-ai-openai@1.1.0@molecule/api-ai@1.1.0ChatMessage gains a teamOnly flag (a human-only note the model never sees, rendered with author attribution) and the chat stream gains a { type: 'message'; message: ChatMessage } event that appends a complete, non-streaming message to the transcript. The React useChat binding handles the new event via appendCompleteMessage, with the same id-based dedupe as card messages so a live team note is byte-identical to what history reloads.@molecule/app-ai-chat@1.1.0@molecule/app-react@1.2.0canEdit prop (default true): when false — a read-only project viewer — the composer blocks a plain message or write-command with a read-only note (team /teamsay and viewer-safe commands still pass), slash commands default-deny unless the command registry flags them viewerSafe, the plan/fast mode toggles disable, and a view-only note shows above the composer. CommandDef gains a viewerSafe flag. The /model picker now refreshes when the custom-model catalog changes (editing a BYO provider no longer leaves the old model shown), and a removed custom model re-points to the same provider before a platform fallback. Also renders teammates' human-only team notes (the message stream event) and matches side-channel command aliases. app-locales-ide adds the read-only-viewer strings.@molecule/app-ide-react@1.6.0ShareLinkManager component (export) so a host can render the same UI in its own team/access panel.@molecule/app-ide-react@1.5.0@molecule/api-resource-ai-models@1.2.6canEdit prop (default true): when false — a read-only project viewer — the composer blocks a plain message or write-command with a read-only note (team /teamsay and viewer-safe commands still pass), slash commands default-deny unless the command registry flags them viewerSafe, the plan/fast mode toggles disable, and a view-only note shows above the composer. CommandDef gains a viewerSafe flag. The /model picker now refreshes when the custom-model catalog changes (editing a BYO provider no longer leaves the old model shown), and a removed custom model re-points to the same provider before a platform fallback. Also renders teammates' human-only team notes (the message stream event) and matches side-channel command aliases. app-locales-ide adds the read-only-viewer strings.@molecule/app-locales-ide@1.1.6glm-5.3 (was glm-5.2). Documents that glm-5.3 narrows reasoning_effort to low | high | max and can no longer disable reasoning; the budget-tokens fallback keeps returning the 'high'/'low' both generations accept.@molecule/api-ai-zhipu@1.0.2ShareLinkManager component (export) so a host can render the same UI in its own team/access panel.@molecule/app-locales-ide@1.1.5extraCommands prop to ChatPanel so a host can merge its own slash commands into the command menu, /help, and the keyboard dispatcher alongside the shared registry. Selecting one fills the input with /<id> for the host's own handler to run; ids must not collide with a built-in command.@molecule/app-ide-react@1.4.0/scripts panel keys, the chat queued-count label, item render errors, and the peak-hour keys across all supported languages.@molecule/app-locales-ide@1.1.4@molecule/app-version@1.0.2/api/ runtime-caching rule, which broke on streaming (SSE) responses and cached authenticated API data.@molecule/app-vite-config-default@1.0.2@molecule/app-pwa-default@1.0.2ide.chat.queuedCount translation key.@molecule/app-locales-ide@1.1.2@molecule/app-locales-ide@1.1.3@molecule/app-ide-react@1.3.3@molecule/api-resource-ai-models@1.2.5@molecule/app-ide-react@1.3.4@molecule/app-oauth-buttons-react@1.0.2SubscriptionUpdateParams.items[] now types the optional quantity a subscription update may set.@molecule/api-payments-stripe@1.2.2requiresSignup limit banner once isAnonymous is false, so a viewer who signs in mid-session no longer sees the guest-tier limit and its dead-end sign-up buttons.@molecule/app-ide-react@1.3.2@molecule/api-payments-stripe@1.2.1@molecule/api-resource-ai-models@1.2.3gpt-5.6-luna free-tier plan-eligible in the us region (freeTierRegions: ['us']), so it can serve as a free-tier plan-mode default and free users may select it in plan mode.@molecule/api-resource-ai-models@1.2.4@molecule/app-ide-react@1.3.1tool_use and tool_result message blocks as native tool_calls and role:"tool" messages instead of flattening them to placeholder text. Multi-turn agentic tool loops now receive real tool results, so models that previously looped on their first tool call and never finished can complete a tool-driven conversation.@molecule/api-ai-local@1.0.2@molecule/api-ai-openai@1.0.2@molecule/api-payments-stripe@1.2.1@molecule/app-react@1.1.1createCheckoutSession accepts a quantity for per-seat plans, and the idempotency key now includes it so changing the seat count starts a new session instead of replaying the previous one.@molecule/api-payments-stripe@1.2.0PATCH /users/:id/plan accepts an optional quantity, passed to the payment provider for per-seat plans and clamped to a whole number of at least one.@molecule/api-resource-user@1.4.0chargeOffSession for capturing a payment from a saved card without the customer present. Resolves the customer's default card (falling back to their most recently attached one), confirms off-session, and returns a normalized outcome with the decline code when it fails. Requires a stable idempotencyKey so a retry inside Stripe's 24h window returns the original PaymentIntent instead of charging again.@molecule/api-payments-stripe@1.1.0quantity to updateSubscription so per-seat plans can bill more than one unit.@molecule/api-payments@1.2.0coversLimitType, and ChatPanel then hides such a card while its limit banner is stating the same limit, so one limit is never shown twice.@molecule/app-ide-react@1.3.0captchaSlot / captchaSolved props render a human-verification challenge in the signup form and gate its submit, so an API that requires a verification token can be used from the in-app modal.@molecule/app-auth-modal-react@1.1.0PlanUpdated now confirms the purchase a checkout redirect returns with, showing a spinner while it is in flight and a retry if it fails. New provider and verify props. Requires @molecule/app-react ^1.1.0.@molecule/app-plan-updated-page-react@1.1.0PlanUpdatedPage now confirms the purchase a checkout redirect returns with, showing a spinner while it is in flight and a retry if it fails. New provider and verify props. Requires @molecule/app-react ^1.1.0.@molecule/app-legal-pages-react@1.1.0POST /portal no longer passes a caller-supplied returnUrl straight to the payment provider — the provider renders it as a link on its own domain, so an arbitrary one was an open redirect. Send an app-relative returnPath instead; a returnUrl is honored only when it is already on the app origin.@molecule/api-billing-routes@1.1.0SandboxConfig gains command (the sandbox's main process, instead of the image's), restartPolicy, and selfDeliveredEnv (env the caller delivers itself, which a provider validates but must never persist in its own configuration).@molecule/api-code-sandbox@1.2.0spawn() accepts pty: { cols, rows }, creating the exec with a TTY so Ctrl-C interrupts the foreground job, streaming the raw (unmultiplexed) terminal bytes, and exposing handle.resize({ cols, rows }).@molecule/api-code-sandbox-docker@1.1.0spawn() now takes SpawnOptions, which adds pty: { cols, rows } for a process with a real controlling terminal, and SpawnHandle gains an optional resize({ cols, rows }) for it. Providers that cannot allocate a PTY must reject the spawn rather than return pipes, so a caller can feature-detect a terminal.@molecule/api-code-sandbox@1.2.0verifyEgress() now reads the app's network policy back from Fly, so the verdict names every allowed port as reachable to any host — a Fly policy matches protocol and port with no destination — and reports open when the policy in force allows a port this provider never configured. Adds reconcileEgressPolicy(app), which re-applies the current policy to an app that already exists.@molecule/api-code-sandbox-flyio@1.2.0POST /users/:id/billing-portal/:provider, which opens the bonded provider's hosted billing portal so a subscriber can update their card, read invoices, and cancel. Returns { url }; an optional returnPath sends them back to a specific app page. Requires @molecule/api-payments ^1.1.0.@molecule/api-resource-user@1.3.0resolveCheckoutRedirectUrls and resolveBillingPortalReturnUrl, which build the URLs a hosted checkout or billing portal returns the buyer to from the APP origin (APP_ORIGIN/ORIGIN) — configurable with PAYMENTS_PLAN_UPDATED_PATH, PAYMENTS_CHECKOUT_CANCEL_PATH and PAYMENTS_BILLING_RETURN_PATH.@molecule/api-payments@1.1.0spawn() — a long-running process with streaming stdout/stderr, writable stdin and kill(), plus pty: { cols, rows } for a real terminal where Ctrl-C interrupts the foreground job and resize() renegotiates the width. exec() now starts every command in the background and waits on its handle, so a launch that leaves a detached child behind returns its real exit code immediately instead of blocking until the deadline, and a command ending in & reports its actual output and exit code instead of a fabricated success.@molecule/api-code-sandbox-e2b@1.2.0useVerifyPaymentReturn, which confirms a purchase with POST /users/:id/verify-payment/:provider after a payment provider redirects back to the app, reading the transaction id a provider left in the query.@molecule/app-react@1.1.0SandboxConfig.command onto the container's Cmd and restartPolicy onto its Docker restart policy, so a container the daemon restarts comes back running the caller's own process.@molecule/api-code-sandbox-docker@1.1.0SandboxConfig.command onto the Machine's init.exec and restartPolicy onto its restart policy, so a Machine Fly restarts comes back running the caller's own process. Adds find(), which enumerates managed Machines app-by-app and throws rather than returning a partial result. selfDeliveredEnv is validated for private routes and never written into the Machine config.@molecule/api-code-sandbox-flyio@1.1.0HTTPS_PROXY / HTTP_PROXY / ALL_PROXY, honouring NO_PROXY) for vendor SDKs that create their own HTTP agent and read no proxy variable. getProxyAgent(url) returns the agent, getProxyAgents(url) the { httpAgent } | { httpsAgent } shape AWS SDK v3's requestHandler accepts, and getProxyUrl(url) the URL for clients that want it directly. All return undefined when the target is not proxied, so passing the result through is a no-op outside a proxied environment.@molecule/api-proxy-agent@1.1.0create() mounts a named volume at a caller-chosen path, createVolume/removeVolume/volumeExists/listVolumes manage volumes, and commitTemplate/getTemplate/listTemplates/removeTemplate capture and restore sandboxes as E2B snapshots.@molecule/api-code-sandbox-e2b@1.2.0exec() no longer blocks for its whole timeout when a command leaves something behind holding its output stream — a detached supervisor, a daemon that keeps its descriptors. It now checks whether the started process is still running and returns as soon as the command itself is over.@molecule/api-code-sandbox-e2b@1.2.0hibernate(), stop() and sleep() now pause the sandbox or throw — an SDK build with no pause method used to resolve a success-shaped noop outcome while the sandbox kept running. They prefer the supported pause() over the deprecated betaPause(), and treat an already-paused sandbox as success.@molecule/api-code-sandbox-e2b@1.2.0PreviewPanel now asks the preview host for a CORS-readable status before mounting the app, so an edge's "unavailable" error page is no longer mistaken for a working preview; hosts that do not serve /__mol/preview-status keep the previous behaviour.@molecule/app-ide-react@1.2.6ShareModal offers only the roles the host actually grants, via a new roles prop that defaults to ['viewer'] — a public link is an unauthenticated credential, so write access through one is opt-in. The role <select> renders only when there is a real choice; with one role the dialog states what the link will grant.@molecule/app-ide-react@1.2.6/plan-updated page instead of the API's verify endpoint, whose host holds no session cookie (the redirect answered 401 and the plan was never granted). Requires @molecule/api-payments ^1.1.0.@molecule/api-payments-paypal@1.0.2/plan-updated page instead of the API's verify endpoint, whose host holds no session cookie (the redirect answered 401 and the plan was never granted), and the session carries client_reference_id + metadata.userId so the resulting customer can be linked to the account that paid. createCheckoutSession accepts clientReferenceId. Requires @molecule/api-payments ^1.1.0.@molecule/api-payments-stripe@1.0.2verifyEgress is implemented and observes egress from inside a throwaway sandbox, rather than being unimplemented.@molecule/api-code-sandbox-e2b@1.2.0Qwen3.8-2.4T-A95B is deliberately not carried alongside it.@molecule/api-resource-ai-models@1.2.2@elastic/transport builds its own undici pool bound to the node origin, which bypasses the environment-driven global dispatcher, so on a host whose only egress path is a proxy every request failed with a bare connection error; the client now receives the proxy URL via its own proxy option, resolved against ELASTICSEARCH_URL so a self-hosted cluster listed in NO_PROXY keeps connecting directly. Nothing is passed when no proxy is configured.@molecule/api-search-elasticsearch@1.0.2requestHandler option, resolved against AWS_S3_ENDPOINT / AWS_ENDPOINT_URL_S3 when set and the regional endpoint otherwise, so an internal S3-compatible endpoint listed in NO_PROXY keeps connecting directly. Nothing is passed when no proxy is configured.@molecule/api-uploads-s3@1.0.3requestHandler option, resolved against AWS_SES_ENDPOINT when set and the regional endpoint otherwise so NO_PROXY is honoured. Nothing is passed when no proxy is configured.@molecule/api-emails-ses@1.0.2requestHandler option, resolved against SQS_ENDPOINT when set and the regional endpoint otherwise, so a LocalStack endpoint listed in NO_PROXY keeps connecting directly. Nothing is passed when no proxy is configured.@molecule/api-queue-sqs@1.0.2stripe SDK builds its own agent and reads no proxy variable, so on a host whose only egress path is a proxy every call failed with a bare connection error; the client now receives a CONNECT-capable agent via the SDK's httpAgent option, resolved against https://api.stripe.com so NO_PROXY is honoured. Nothing is passed when no proxy is configured.@molecule/api-payments-stripe@1.0.3requestHandler option, resolved against the configured endpoint so a store listed in NO_PROXY keeps connecting directly. Nothing is passed when no proxy is configured.@molecule/api-code-sandbox-flyio@1.2.0get() now returns null only for a sandbox that does not exist and throws on any other failure, a new describe(id) reads a sandbox's record without connecting (so a status check never resumes a paused sandbox, and a paused one reports sleeping), and sandboxes are created with onTimeout: pause instead of E2B's default kill. list() skips paused sandboxes rather than waking them.@molecule/api-code-sandbox-e2b@1.1.0exportFiles(path) now roots the archive at the last segment of path (my-app/…), matching the core contract and the Docker bond, and shell-quotes paths in exportFiles/importFiles.@molecule/api-code-sandbox-e2b@1.1.0@molecule/api-channel-capture@1.0.2@molecule/api-push-capture@1.0.2@molecule/api-sms-capture@1.0.2@molecule/api-webhook-capture@1.0.2resource-share-links). Every interpolation site quotes identifiers, so hyphens are safe; the previous allowlist rejected @molecule/api-resource-share's tables, making every share-link operation throw.@molecule/api-database-mysql@1.0.2@molecule/api-database-postgresql@1.0.2@molecule/api-database-sqlite@1.0.3'{"key": "x", "label": "Build a new app"}') and render the label text, matching the existing object-option normalization.@molecule/app-ide-react@1.2.3@molecule/app-ide-react@1.2.4@molecule/app-ide-react@1.2.5@molecule/app-bonds-default-react@1.0.3@molecule/api-resource-ai-models@1.2.1@molecule/api-channel-capture@1.0.2@molecule/api-emails-capture@1.0.2@molecule/api-push-capture@1.0.2@molecule/api-sms-capture@1.0.2@molecule/api-webhook-capture@1.0.2exportFiles rooting contract: archives are rooted at the last segment of the exported path, and importFiles(dirname(path)) is the inverse.@molecule/api-code-sandbox@1.1.1@molecule/api-resource-user@1.2.1@molecule/app-react@1.0.3AuthClientConfig.shouldRestoreUser lets an app reject a cookie-restored user and clear the stale presence hint, so an anonymous session cannot hydrate as a blank signed-in user. Defaults to current behaviour.@molecule/app-auth@1.1.0verifyMiddleware accepts { shouldRefreshSession }, letting an app skip the transparent token re-issue (and its presence hint) for sessions that must not appear signed in. Defaults to current behaviour.@molecule/api-resource-user@1.2.0scheduledPricing: a dated rate card that replaces the base rates from its effectiveFrom instant. Pricing resolves per request, so the catalog is correct on both sides of a switch without an edit landed at the moment it takes effect. GET /ai/models serves whichever rates are billing now. DeepSeek V4 Pro and Flash carry the provider's 2026-08-16 rise, including its peak-hour windows. New exports: effectiveBaseRates, effectivePeakPricing, withEffectivePricing; modelRegionRates takes an optional instant.@molecule/api-resource-ai-models@1.2.0@molecule/api-code-sandbox@1.1.0@molecule/app-ai-models@1.2.0@molecule/app-ide-react@1.2.0@molecule/app-locales-ide@1.1.0useChat now recovers a chat stream interrupted by a screen lock or a backgrounded page, resuming from the server instead of staying silent until the stall watchdog fires.@molecule/app-react@1.0.2@molecule/app-ide-react@1.2.2ide.chat.itemRenderError, shown in place of a chat message that could not be rendered, in all 79 languages.@molecule/app-locales-ide@1.1.1@molecule/api-export-pptx@1.0.2gemini-3.7-flash, replacing the superseded gemini-3.6-flash.@molecule/api-ai-google@1.0.2up, down or health checks pending indefinitely.@molecule/api-staging-docker-compose@1.0.2NAME=value env assignments, so code such as auth={authClient} or apiKeys: 'API keys' is returned verbatim instead of as [REDACTED]. Command output and .env reads keep the full env-dump treatment. New exports: redactSecretsInCode, isEnvFilePath.@molecule/api-ai-tools@1.0.2ask_user option sent as { label } instead of a string — is coerced to its text rather than reaching JSX, and each chat timeline item renders inside its own error boundary so one unrenderable item cannot blank the chat. ChatPanel accepts onRenderError to report a caught item error to the host.@molecule/app-ide-react@1.2.1UIClassMap.touchTargetCompact — a 36px coarse-pointer hit-area floor for inline CTAs in dense surfaces (banner/chat-card actions) where the full 44px touchTarget is visually heavy; chat notice-card actions with a semantic color now use it.@molecule/app-ui-nativewind@1.1.0@molecule/app-ui-tailwind@1.1.0@molecule/app-ui@1.1.0color (ChatEventCardAction.color); colored actions render as standard ClassMap cm.button buttons so CTAs match the host app's other buttons.@molecule/app-ide-react@1.1.0supersededBy, naming the newer-generation model that replaces an older one. Superseded models are excluded from MODEL_IDS, getAvailableModels(), GET /ai/models and the client picker helpers — so only the newest generation of a family is offered — while getModel() still returns them so saved selections and past usage stay priceable. New helpers: isSelectableModel() and resolveSelectableModelId() (server), isSelectableModel() (client). The Alibaba AI bond now defaults to qwen3.8-max.@molecule/api-resource-ai-models@1.1.0@molecule/app-ai-models@1.1.0updatePlan now logs every rejected plan update (with errorKey context) and analytics-tracking failures instead of silently swallowing them.@molecule/api-resource-user@1.1.1UIClassMap.touchTargetCompact — a 36px coarse-pointer hit-area floor for inline CTAs in dense surfaces (banner/chat-card actions) where the full 44px touchTarget is visually heavy; chat notice-card actions with a semantic color now use it.@molecule/app-ide-react@1.1.1@bufbuild/protobuf (the major the E2B SDK's Connect RPC chain requires) so installs that skip automatic peer resolution — e.g. legacy-peer-deps — still place a compatible copy on the resolution path.@molecule/api-code-sandbox-e2b@1.0.4@molecule/api-resource-ai-models@1.1.0automatic flag — including kickoffs that were suppressed while a send was in flight.@molecule/app-ide-react@1.1.2supersededBy, naming the newer-generation model that replaces an older one. Superseded models are excluded from MODEL_IDS, getAvailableModels(), GET /ai/models and the client picker helpers — so only the newest generation of a family is offered — while getModel() still returns them so saved selections and past usage stay priceable. New helpers: isSelectableModel() and resolveSelectableModelId() (server), isSelectableModel() (client). The Alibaba AI bond now defaults to qwen3.8-max.@molecule/api-ai-alibaba@1.0.2@molecule/app-ide-react@1.0.5@molecule/app-ide-react@1.0.3@molecule/app-ide-react@1.0.4org_slug from the shared-IPv4 assignment request so each sandbox app actually gets a public IP — without it the <app>.fly.dev preview URL never routed and the IDE hung on "Loading preview…".@molecule/api-code-sandbox-flyio@1.0.15@molecule/api-code-sandbox-flyio@1.0.14@molecule/app-ide-react@1.0.2create's machine POST through Fly's app-propagation 404 ("app not found") so a freshly-created app no longer intermittently fails the sandbox boot.@molecule/api-code-sandbox-flyio@1.0.13type (not region) when assigning a shared IPv4 — Fly rejects region for shared IPs with a 400, which left sandbox apps without a public IP so their preview URL never routed.@molecule/api-code-sandbox-flyio@1.0.16bio and avatar profile fields to OAuthUserProps.@molecule/api-oauth@1.1.0picture) from the Google userinfo response.@molecule/api-oauth-google@1.1.0description), and 400x400 profile image from the X profile via user.fields.@molecule/api-oauth-twitter@1.1.0@molecule/api-oauth-github@1.1.0@molecule/api-oauth-gitlab@1.1.0@molecule/api-resource-user@1.1.0org_slug from the ip_assignments request. Fly derives the org from the target app and rejects an explicit org_slug with 400 "organization not found", which blocked every sandbox from reaching its database. App creation still sends org_slug (that endpoint requires it).@molecule/api-code-sandbox-flyio@1.0.3@molecule/app-rich-text-quill@1.0.2@molecule/app-rich-text@1.0.2@molecule/api-scheduler-cloudflare and @molecule/api-database-d1.Running a molecule API on Workers was not a porting problem, it was a missing pair of bonds. Application code is unchanged; only bonds/ differs.
**api-scheduler-cloudflare** — api-scheduler-default keeps tasks alive with setInterval, which needs a long-lived process a Worker does not have. This provider registers tasks and runs them from the Worker's scheduled() handler via runDueTasks(), driven by Cron Triggers. intervalMs is NOT honoured by default and that is deliberate: an isolate is short-lived, so "when did this last run" is not reliably known, and skipping on that basis can mean a task never runs. The trigger schedule is the schedule. TaskStatus.nextRunAt is always null rather than a computed guess, and runDueTasks() never rejects, so one failing task cannot fail the invocation and trigger a platform retry that re-runs the tasks that already succeeded.
**api-database-d1** — D1 _is_ SQLite, so this reuses the sqlite bond's dialect verbatim and replaces only the pool (better-sqlite3 is a synchronous native binding; D1 is an async platform binding). This was cheap because createStore() was already written against the abstract DatabasePool rather than its driver. Verified the built package's import graph never reaches better-sqlite3, which is what lets it run in an isolate at all. The D1 binding is passed in, never discovered — Worker bindings arrive per-invocation on env. pool.transaction is left undefined rather than faked, because D1 has no interactive transactions and a rollback that reports success without happening is worse than an absent capability.
**api-database-sqlite** gains ./store.js and ./utilities.js subpath exports so the driver-free dialect can be imported without pulling the native driver into a Workers bundle.
@molecule/api-database-d1@1.0.2@molecule/api-database-sqlite@1.0.2@molecule/api-scheduler-cloudflare@1.0.2@molecule/api-project-archive destroys the original once a capture verifies, so a state-owning provider with no external-state bond is silent, permanent data loss — not a missing feature. Adding @molecule/api-database-d1 created exactly that gap, and mlcl's coverage gate failed until this closed it.
Capture shells out to wrangler d1 export for the same reason the Postgres bond shells out to pg_dump: only the engine that owns the data can produce a consistent snapshot with schema, indexes and constraints intact.
Three refusals that exist because each would otherwise be silent: --remote is the default (a local export dumps the empty miniflare database and would look like a clean, successful capture); a zero-byte export is an error, not an empty database (d1 export always emits schema); and databaseNames must return an array — anything else is rejected rather than read as "this project owns nothing".
@molecule/api-project-archive-external-state-d1@1.0.2./optional/<pair>.js subpath exports.**Import path change** (pre-release: nothing external consumes this yet, so it ships as a patch rather than a major): setupAppRealtimeSocketio, setupAppKeyboardShortcutsHotkeys, setupAppCommandPaletteCmdk, setupAppCodeEditorMonaco, setupAppVirtualScrollTanstack, setupAppDragDropDndkit, setupAppChartsChartjs, setupAppMapsLeaflet and setupAppVideoHls are no longer exported from the package root. Import each from its own subpath:
``diff -import { setupAppMapsLeaflet } from '@molecule/app-bonds-default-react' +import { setupAppMapsLeaflet } from '@molecule/app-bonds-default-react/optional/maps-leaflet.js' `
**Why.** A bundler must RESOLVE every import() in a module it pulls into the graph, before tree-shaking can drop anything. While these wirings sat in setup.ts — re-exported from the barrel — importing bootstrapApp dragged all 18 optional providers in, so any app that had not installed all 18 failed to build:
` [vite]: Rolldown failed to resolve import "@molecule/app-maps" from ".../app-bonds-default-react/dist/setup.js" `
A scaffolded status-page` app installed 3 of the 18; the other 15 were equally unresolvable and only the alphabetically-first was reported. Declaring them as optional peers is correct bookkeeping but changes nothing, because npm does not install optional peers — and installing all 18 would tax every app with Monaco, Leaflet, Chart.js, Socket.IO and hls.js, which is what making them optional was for. One module per pair means an app pays for exactly the providers it imports.
Verified end to end: the app that reproduced the failure now builds (2500 modules, 0 unresolved), and all 266 template workspaces type-check clean.
@molecule/app-bonds-default-react@1.0.21.0.0 published with files: ["dist"], so no package carried a README and every npm page read "This package does not have a README". The generated doc (formerly MOLECULE.md, now README.md) is now included in the tarball, giving both humans and coding agents the full API reference from node_modules.
@molecule/api-ai-document-extraction@1.0.1@molecule/api-ai-email-composer@1.0.1@molecule/api-ai-image-generation-pipeline@1.0.1@molecule/api-ai-moderation-pipeline@1.0.1@molecule/api-ai-quiz-generation@1.0.1@molecule/api-ai-rag-qa@1.0.1@molecule/api-ai-workflow-engine@1.0.1@molecule/api-activity-console@1.0.1@molecule/api-activity-http@1.0.1@molecule/api-ai-agents-llm@1.0.1@molecule/api-ai-classification-llm@1.0.1@molecule/api-ai-embeddings-local@1.0.1@molecule/api-ai-embeddings-openai@1.0.1@molecule/api-ai-image-generation-openai@1.0.1@molecule/api-ai-image-generation-stability@1.0.1@molecule/api-ai-rag-llm@1.0.1@molecule/api-ai-speech-elevenlabs@1.0.1@molecule/api-ai-speech-openai@1.0.1@molecule/api-ai-summarization-llm@1.0.1@molecule/api-ai-translation-deepl@1.0.1@molecule/api-ai-vector-store-chroma@1.0.1@molecule/api-ai-vector-store-memory@1.0.1@molecule/api-ai-vector-store-pgvector@1.0.1@molecule/api-ai-vector-store-pinecone@1.0.1@molecule/api-ai-alibaba@1.0.1@molecule/api-ai-anthropic@1.0.1@molecule/api-ai-deepseek@1.0.1@molecule/api-ai-google@1.0.1@molecule/api-ai-local@1.0.1@molecule/api-ai-minimax@1.0.1@molecule/api-ai-moonshot@1.0.1@molecule/api-ai-openai@1.0.1@molecule/api-ai-xai@1.0.1@molecule/api-ai-zhipu@1.0.1@molecule/api-analytics-mixpanel@1.0.1@molecule/api-analytics-posthog@1.0.1@molecule/api-audit-database@1.0.1@molecule/api-audit-file@1.0.1@molecule/api-cache-memcached@1.0.1@molecule/api-cache-memory@1.0.1@molecule/api-cache-redis@1.0.1@molecule/api-calendar-google@1.0.1@molecule/api-calendar-microsoft@1.0.1@molecule/api-channel-capture@1.0.1@molecule/api-channel-discord@1.0.1@molecule/api-channel-messenger@1.0.1@molecule/api-channel-slack@1.0.1@molecule/api-channel-telegram@1.0.1@molecule/api-channel-whatsapp@1.0.1@molecule/api-code-sandbox-docker@1.0.1@molecule/api-compliance-gdpr@1.0.1@molecule/api-config-env@1.0.1@molecule/api-cron-bullmq@1.0.1@molecule/api-cron-node-cron@1.0.1@molecule/api-crypto-prices-coingecko@1.0.1@molecule/api-crypto-prices-coinmarketcap@1.0.1@molecule/api-database-mysql@1.0.1@molecule/api-database-postgresql@1.0.1@molecule/api-database-sqlite@1.0.1@molecule/api-drug-database-rxnorm@1.0.1@molecule/api-emails-inbound-mailgun@1.0.1@molecule/api-emails-inbound-ses@1.0.1@molecule/api-emails-capture@1.0.1@molecule/api-emails-mailgun@1.0.1@molecule/api-emails-sendgrid@1.0.1@molecule/api-emails-sendmail@1.0.1@molecule/api-emails-ses@1.0.1@molecule/api-encryption-aes@1.0.1@molecule/api-equity-prices-alpha-vantage@1.0.1@molecule/api-equity-prices-iex@1.0.1@molecule/api-equity-prices-polygon@1.0.1@molecule/api-error-tracking-console@1.0.1@molecule/api-error-tracking-sentry@1.0.1@molecule/api-esign-hellosign@1.0.1@molecule/api-external-auth-supabase@1.0.1@molecule/api-feature-flags-database@1.0.1@molecule/api-flights-amadeus@1.0.1@molecule/api-fx-rates-ecb@1.0.1@molecule/api-fx-rates-openexchange@1.0.1@molecule/api-geolocation-google@1.0.1@molecule/api-geolocation-mapbox@1.0.1@molecule/api-geolocation-nominatim@1.0.1@molecule/api-hotels-amadeus@1.0.1@molecule/api-http-axios@1.0.1@molecule/api-http-fetch@1.0.1@molecule/api-i18n-simple@1.0.1@molecule/api-image-jimp@1.0.1@molecule/api-image-sharp@1.0.1@molecule/api-import-export-csv@1.0.1@molecule/api-jwt-jsonwebtoken@1.0.1@molecule/api-kyc-stripe-identity@1.0.1@molecule/api-logger-console@1.0.1@molecule/api-logger-loglevel@1.0.1@molecule/api-logger-pino@1.0.1@molecule/api-logger-winston@1.0.1@molecule/api-media-streaming-hls@1.0.1@molecule/api-middleware-body-parser-express@1.0.1@molecule/api-middleware-cookie-parser-express@1.0.1@molecule/api-middleware-cors-express@1.0.1@molecule/api-monitoring-default@1.0.1@molecule/api-multi-tenancy-schema@1.0.1@molecule/api-notification-center-database@1.0.1@molecule/api-notifications-slack@1.0.1@molecule/api-notifications-webhook@1.0.1@molecule/api-nutrition-database-open-food-facts@1.0.1@molecule/api-oauth-client-generic@1.0.1@molecule/api-oauth-apple@1.0.1@molecule/api-oauth-github@1.0.1@molecule/api-oauth-gitlab@1.0.1@molecule/api-oauth-google@1.0.1@molecule/api-oauth-microsoft@1.0.1@molecule/api-oauth-twitter@1.0.1@molecule/api-password-bcrypt@1.0.1@molecule/api-payments-apple@1.0.1@molecule/api-payments-google@1.0.1@molecule/api-payments-paypal@1.0.1@molecule/api-payments-stripe@1.0.1@molecule/api-pdf-pdfkit@1.0.1@molecule/api-pdf-puppeteer@1.0.1@molecule/api-permissions-casbin@1.0.1@molecule/api-permissions-custom@1.0.1@molecule/api-project-archive-external-state-mysql@1.0.1@molecule/api-project-archive-external-state-postgresql@1.0.1@molecule/api-project-archive-external-state-sqlite@1.0.1@molecule/api-project-archive-object-storage@1.0.1@molecule/api-push-capture@1.0.1@molecule/api-push-notifications-web-push@1.0.1@molecule/api-queue-memory@1.0.1@molecule/api-queue-rabbitmq@1.0.1@molecule/api-queue-redis@1.0.1@molecule/api-queue-sqs@1.0.1@molecule/api-rate-limit-memory@1.0.1@molecule/api-rate-limit-redis@1.0.1@molecule/api-realtime-socketio@1.0.1@molecule/api-realtime-sse@1.0.1@molecule/api-realtime-ws@1.0.1@molecule/api-realtime-yjs@1.0.1@molecule/api-reporting-database@1.0.1@molecule/api-scheduler-default@1.0.1@molecule/api-search-elasticsearch@1.0.1@molecule/api-search-meilisearch@1.0.1@molecule/api-search-postgres@1.0.1@molecule/api-search-typesense@1.0.1@molecule/api-secrets-doppler@1.0.1@molecule/api-secrets-env@1.0.1@molecule/api-secrets-molecule@1.0.1@molecule/api-shipping-easypost@1.0.1@molecule/api-shipping-shippo@1.0.1@molecule/api-sitemap-xml@1.0.1@molecule/api-sms-capture@1.0.1@molecule/api-sms-twilio@1.0.1@molecule/api-sms-vonage@1.0.1@molecule/api-templating-handlebars@1.0.1@molecule/api-templating-mjml@1.0.1@molecule/api-travel-amadeus@1.0.1@molecule/api-two-factor-otplib@1.0.1@molecule/api-uploads-filesystem@1.0.1@molecule/api-uploads-s3@1.0.1@molecule/api-video-meetings-zoom@1.0.1@molecule/api-video-rooms-daily-co@1.0.1@molecule/api-video-rooms-livekit@1.0.1@molecule/api-wearable-fitbit@1.0.1@molecule/api-wearable-oura@1.0.1@molecule/api-weather-open-meteo@1.0.1@molecule/api-weather-openweather@1.0.1@molecule/api-webhook-capture@1.0.1@molecule/api-webhook-http@1.0.1@molecule/api-webhook-queue@1.0.1@molecule/api-workflow-database@1.0.1@molecule/api-ci-github-actions@1.0.1@molecule/api-activity@1.0.1@molecule/api-ai-agents@1.0.1@molecule/api-ai-classification@1.0.1@molecule/api-ai-embeddings@1.0.1@molecule/api-ai-image-generation@1.0.1@molecule/api-ai-rag@1.0.1@molecule/api-ai-speech@1.0.1@molecule/api-ai-summarization@1.0.1@molecule/api-ai-tools@1.0.1@molecule/api-ai-translation@1.0.1@molecule/api-ai-vector-store@1.0.1@molecule/api-ai@1.0.1@molecule/api-analytics@1.0.1@molecule/api-audit@1.0.1@molecule/api-cache@1.0.1@molecule/api-calendar@1.0.1@molecule/api-channel@1.0.1@molecule/api-code-sandbox@1.0.1@molecule/api-compliance@1.0.1@molecule/api-config@1.0.1@molecule/api-cron@1.0.1@molecule/api-crypto-prices@1.0.1@molecule/api-database@1.0.1@molecule/api-drug-database@1.0.1@molecule/api-email-templates@1.0.1@molecule/api-emails-inbound@1.0.1@molecule/api-emails@1.0.1@molecule/api-encryption@1.0.1@molecule/api-entitlements@1.0.1@molecule/api-equity-prices@1.0.1@molecule/api-error-tracking@1.0.1@molecule/api-esign@1.0.1@molecule/api-external-auth@1.0.1@molecule/api-feature-flags@1.0.1@molecule/api-flights@1.0.1@molecule/api-fx-rates@1.0.1@molecule/api-geolocation@1.0.1@molecule/api-hotels@1.0.1@molecule/api-http@1.0.1@molecule/api-i18n@1.0.1@molecule/api-image@1.0.1@molecule/api-import-export@1.0.1@molecule/api-jwt@1.0.1@molecule/api-kyc@1.0.1@molecule/api-logger@1.0.1@molecule/api-media-streaming@1.0.1@molecule/api-content-moderation@1.0.1@molecule/api-monitoring@1.0.1@molecule/api-multi-tenancy@1.0.1@molecule/api-notification-center@1.0.1@molecule/api-notifications@1.0.1@molecule/api-nutrition-database@1.0.1@molecule/api-oauth-client@1.0.1@molecule/api-oauth@1.0.1@molecule/api-password@1.0.1@molecule/api-payments@1.0.1@molecule/api-pdf@1.0.1@molecule/api-permissions@1.0.1@molecule/api-project-archive@1.0.1@molecule/api-push-notifications@1.0.1@molecule/api-queue@1.0.1@molecule/api-rate-limit@1.0.1@molecule/api-realtime@1.0.1@molecule/api-reporting@1.0.1@molecule/api-scheduler@1.0.1@molecule/api-search@1.0.1@molecule/api-secrets@1.0.1@molecule/api-shipping@1.0.1@molecule/api-sitemap@1.0.1@molecule/api-sms@1.0.1@molecule/api-staging@1.0.1@molecule/api-templating@1.0.1@molecule/api-travel@1.0.1@molecule/api-two-factor@1.0.1@molecule/api-uploads@1.0.1@molecule/api-video-meetings@1.0.1@molecule/api-video-rooms@1.0.1@molecule/api-wearable@1.0.1@molecule/api-weather@1.0.1@molecule/api-webhook@1.0.1@molecule/api-workflow@1.0.1@molecule/api-bond@1.0.1@molecule/api-bonds-default-express@1.0.1@molecule/api-resource@1.0.1@molecule/api-server-default-express@1.0.1@molecule/api-locales-ai-anthropic@1.0.1@molecule/api-locales-ai-conversation@1.0.1@molecule/api-locales-ai@1.0.1@molecule/api-locales-analytics@1.0.1@molecule/api-locales-body-parser@1.0.1@molecule/api-locales-cache@1.0.1@molecule/api-locales-code-sandbox-docker@1.0.1@molecule/api-locales-code-sandbox@1.0.1@molecule/api-locales-config@1.0.1@molecule/api-locales-database@1.0.1@molecule/api-locales-device@1.0.1@molecule/api-locales-emails@1.0.1@molecule/api-locales-monitoring@1.0.1@molecule/api-locales-notifications@1.0.1@molecule/api-locales-payment@1.0.1@molecule/api-locales-payments-google@1.0.1@molecule/api-locales-payments-stripe@1.0.1@molecule/api-locales-product@1.0.1@molecule/api-locales-project@1.0.1@molecule/api-locales-property@1.0.1@molecule/api-locales-queue-rabbitmq@1.0.1@molecule/api-locales-queue@1.0.1@molecule/api-locales-resource-api-key@1.0.1@molecule/api-locales-resource-course@1.0.1@molecule/api-locales-resource-grade@1.0.1@molecule/api-locales-resource-message@1.0.1@molecule/api-locales-resource-version-history@1.0.1@molecule/api-locales-resource@1.0.1@molecule/api-locales-scheduler@1.0.1@molecule/api-locales-secrets-doppler@1.0.1@molecule/api-locales-secrets@1.0.1@molecule/api-locales-status-page@1.0.1@molecule/api-locales-tag@1.0.1@molecule/api-locales-trash@1.0.1@molecule/api-locales-uploads@1.0.1@molecule/api-locales-user-payments@1.0.1@molecule/api-locales-user@1.0.1@molecule/api-middleware-analytics@1.0.1@molecule/api-billing-routes@1.0.1@molecule/api-middleware-body-parser@1.0.1@molecule/api-middleware-cookie-parser@1.0.1@molecule/api-middleware-cors@1.0.1@molecule/api-middleware-request-logging@1.0.1@molecule/api-middleware-validation@1.0.1@molecule/api-resource-activity-feed@1.0.1@molecule/api-resource-address@1.0.1@molecule/api-resource-ai-conversation@1.0.1@molecule/api-resource-ai-models@1.0.1@molecule/api-resource-api-key@1.0.1@molecule/api-resource-booking@1.0.1@molecule/api-resource-bookmark@1.0.1@molecule/api-resource-cart@1.0.1@molecule/api-resource-comment@1.0.1@molecule/api-resource-course@1.0.1@molecule/api-resource-device-auth-token@1.0.1@molecule/api-resource-device@1.0.1@molecule/api-resource-event-type@1.0.1@molecule/api-resource-feature-flag@1.0.1@molecule/api-resource-firmware@1.0.1@molecule/api-resource-follow@1.0.1@molecule/api-resource-forum-thread@1.0.1@molecule/api-resource-grade@1.0.1@molecule/api-resource-inventory@1.0.1@molecule/api-resource-invoice@1.0.1@molecule/api-resource-journal-entry@1.0.1@molecule/api-resource-medication@1.0.1@molecule/api-resource-meeting@1.0.1@molecule/api-resource-message@1.0.1@molecule/api-resource-notification@1.0.1@molecule/api-notifications-preferences@1.0.1@molecule/api-resource-order@1.0.1@molecule/api-resource-payment-method@1.0.1@molecule/api-resource-payment@1.0.1@molecule/api-resource-product@1.0.1@molecule/api-resource-project@1.0.1@molecule/api-resource-property@1.0.1@molecule/api-resource-reaction@1.0.1@molecule/api-resource-readings@1.0.1@molecule/api-reputation@1.0.1@molecule/api-resource-review@1.0.1@molecule/api-resource-room-type@1.0.1@molecule/api-resource-share@1.0.1@molecule/api-resource-status-page@1.0.1@molecule/api-streak@1.0.1@molecule/api-resource-subscriber@1.0.1@molecule/api-resource-tag@1.0.1@molecule/api-resource-task@1.0.1@molecule/api-resource-template@1.0.1@molecule/api-resource-thread@1.0.1@molecule/api-trash@1.0.1@molecule/api-resource-user@1.0.1@molecule/api-resource-version-history@1.0.1@molecule/api-resource-wiki-page@1.0.1@molecule/api-resource-workspace@1.0.1@molecule/api-staging-docker-compose@1.0.1@molecule/api-testing@1.0.1@molecule/api-animation-renderer@1.0.1@molecule/api-audio-render@1.0.1@molecule/api-breach-check@1.0.1@molecule/api-canvas-render@1.0.1@molecule/api-database-remote@1.0.1@molecule/api-export-pptx@1.0.1@molecule/api-feed-podcast@1.0.1@molecule/api-feed-rss-parser@1.0.1@molecule/api-feed-rss@1.0.1@molecule/api-formula-engine@1.0.1@molecule/api-git-workspace@1.0.1@molecule/api-image-compositor@1.0.1@molecule/api-imap@1.0.1@molecule/api-leaderboard@1.0.1@molecule/api-link-preview@1.0.1@molecule/api-oembed@1.0.1@molecule/api-openapi@1.0.1@molecule/api-payroll-tax-us@1.0.1@molecule/api-qr-code@1.0.1@molecule/api-quiz-grading@1.0.1@molecule/api-rank-score@1.0.1@molecule/api-realtime-rooms@1.0.1@molecule/api-recurring-schedule@1.0.1@molecule/api-semantic-search@1.0.1@molecule/api-smtp@1.0.1@molecule/api-spaced-repetition@1.0.1@molecule/api-stack-fingerprint@1.0.1@molecule/api-staging-state@1.0.1@molecule/api-utilities-validation@1.0.1@molecule/api-video-render@1.0.1@molecule/api-wallet-pass@1.0.1@molecule/app-ai-assistant-default@1.0.1@molecule/app-ai-chat-http@1.0.1@molecule/app-ai-copilot-default@1.0.1@molecule/app-ai-image-generator-default@1.0.1@molecule/app-ai-voice-default@1.0.1@molecule/app-ai-voice-parakeet@1.0.1@molecule/app-ai-voice-whisper@1.0.1@molecule/app-analytics-mixpanel@1.0.1@molecule/app-analytics-posthog@1.0.1@molecule/app-audio-howler@1.0.1@molecule/app-calendar-fullcalendar@1.0.1@molecule/app-charts-chartjs@1.0.1@molecule/app-code-editor-monaco@1.0.1@molecule/app-color-picker-default@1.0.1@molecule/app-command-palette-cmdk@1.0.1@molecule/app-country-flags-country-flag-icons@1.0.1@molecule/app-data-table-tanstack@1.0.1@molecule/app-date-range-picker-default@1.0.1@molecule/app-drag-drop-dndkit@1.0.1@molecule/app-file-upload-filepond@1.0.1@molecule/app-fonts-arimo@1.0.1@molecule/app-fonts-dm-sans@1.0.1@molecule/app-fonts-dm-serif-display@1.0.1@molecule/app-fonts-ibm-plex-mono@1.0.1@molecule/app-fonts-ibm-plex-sans@1.0.1@molecule/app-fonts-inter@1.0.1@molecule/app-fonts-jetbrains-mono@1.0.1@molecule/app-fonts-lato@1.0.1@molecule/app-fonts-lora@1.0.1@molecule/app-fonts-manrope@1.0.1@molecule/app-fonts-material-symbols@1.0.1@molecule/app-fonts-merriweather@1.0.1@molecule/app-fonts-newsreader@1.0.1@molecule/app-fonts-playfair-display@1.0.1@molecule/app-fonts-plus-jakarta-sans@1.0.1@molecule/app-fonts-source-serif-4@1.0.1@molecule/app-fonts-space-grotesk@1.0.1@molecule/app-fonts-system@1.0.1@molecule/app-gallery-photoswipe@1.0.1@molecule/app-http-axios@1.0.1@molecule/app-i18n-i18next@1.0.1@molecule/app-i18n-react-i18next@1.0.1@molecule/app-icons-molecule@1.0.1@molecule/app-ide-default@1.0.1@molecule/app-image-crop-cropperjs@1.0.1@molecule/app-kanban-default@1.0.1@molecule/app-keyboard-shortcuts-hotkeys@1.0.1@molecule/app-live-preview-iframe@1.0.1@molecule/app-maps-leaflet@1.0.1@molecule/app-markdown-react-markdown@1.0.1@molecule/app-clipboard-react-native@1.0.1@molecule/app-keyboard-react-native@1.0.1@molecule/app-lifecycle-react-native@1.0.1@molecule/app-network-react-native@1.0.1@molecule/app-push-react-native@1.0.1@molecule/app-splash-screen-react-native@1.0.1@molecule/app-status-bar-react-native@1.0.1@molecule/app-notification-center-default@1.0.1@molecule/app-realtime-socketio@1.0.1@molecule/app-rich-text-quill@1.0.1@molecule/app-routing-next@1.0.1@molecule/app-routing-react-navigation@1.0.1@molecule/app-routing-react-router@1.0.1@molecule/app-routing-vue-router@1.0.1@molecule/app-state-jotai@1.0.1@molecule/app-state-redux@1.0.1@molecule/app-state-zustand@1.0.1@molecule/app-status-dashboard-http@1.0.1@molecule/app-stepper-default@1.0.1@molecule/app-storage-async-storage@1.0.1@molecule/app-storage-localstorage@1.0.1@molecule/app-styling-tailwind@1.0.1@molecule/app-theme-css-variables-liquid-glass@1.0.1@molecule/app-theme-css-variables@1.0.1@molecule/app-timeline-default@1.0.1@molecule/app-tour-shepherd@1.0.1@molecule/app-tree-view-default@1.0.1@molecule/app-ui-nativewind@1.0.1@molecule/app-ui-tailwind-glass@1.0.1@molecule/app-ui-tailwind@1.0.1@molecule/app-video-hls@1.0.1@molecule/app-virtual-scroll-tanstack@1.0.1@molecule/app-ai-assistant@1.0.1@molecule/app-ai-chat@1.0.1@molecule/app-ai-copilot@1.0.1@molecule/app-ai-image-generator@1.0.1@molecule/app-ai-models@1.0.1@molecule/app-ai-voice@1.0.1@molecule/app-analytics@1.0.1@molecule/app-audio@1.0.1@molecule/app-auth@1.0.1@molecule/app-calendar@1.0.1@molecule/app-code-editor@1.0.1@molecule/app-color-picker@1.0.1@molecule/app-command-palette@1.0.1@molecule/app-country-flags@1.0.1@molecule/app-data-table@1.0.1@molecule/app-date-range-picker@1.0.1@molecule/app-device@1.0.1@molecule/app-drag-drop@1.0.1@molecule/app-file-upload@1.0.1@molecule/app-fonts@1.0.1@molecule/app-forms@1.0.1@molecule/app-gallery@1.0.1@molecule/app-http@1.0.1@molecule/app-i18n@1.0.1@molecule/app-icons@1.0.1@molecule/app-ide@1.0.1@molecule/app-image-crop@1.0.1@molecule/app-kanban@1.0.1@molecule/app-keyboard-shortcuts@1.0.1@molecule/app-live-preview@1.0.1@molecule/app-logger@1.0.1@molecule/app-markdown@1.0.1@molecule/app-notification-center@1.0.1@molecule/app-platform@1.0.1@molecule/app-realtime@1.0.1@molecule/app-routing@1.0.1@molecule/app-state@1.0.1@molecule/app-status-dashboard@1.0.1@molecule/app-stepper@1.0.1@molecule/app-storage@1.0.1@molecule/app-styling@1.0.1@molecule/app-theme@1.0.1@molecule/app-timeline@1.0.1@molecule/app-tour@1.0.1@molecule/app-tree-view@1.0.1@molecule/app-ui-showcase@1.0.1@molecule/app-ui@1.0.1@molecule/app-utilities@1.0.1@molecule/app-version@1.0.1@molecule/app-virtual-scroll@1.0.1@molecule/app-achievement-card-react@1.0.1@molecule/app-action-menu-react@1.0.1@molecule/app-activity-feed-react@1.0.1@molecule/app-activity-timeline-react@1.0.1@molecule/app-address-display-react@1.0.1@molecule/app-adjustment-slider-react@1.0.1@molecule/app-admin-table-react@1.0.1@molecule/app-amount-input-react@1.0.1@molecule/app-analytics-react@1.0.1@molecule/app-feature-animation-canvas-react@1.0.1@molecule/app-annotation-pin-react@1.0.1@molecule/app-announcement-bar-react@1.0.1@molecule/app-feature-audio-effects-rack-react@1.0.1@molecule/app-feature-audio-mixer-react@1.0.1@molecule/app-audio-player-react@1.0.1@molecule/app-audio-recorder-react@1.0.1@molecule/app-feature-audio-waveform-react@1.0.1@molecule/app-audit-log-row-react@1.0.1@molecule/app-auth-brand-header-react@1.0.1@molecule/app-auth-modal-react@1.0.1@molecule/app-auth-shell-react@1.0.1@molecule/app-auth-ui-react@1.0.1@molecule/app-author-bio-card-react@1.0.1@molecule/app-avatar-stack-react@1.0.1@molecule/app-feature-barcode-scanner-react@1.0.1@molecule/app-bias-indicator-react@1.0.1@molecule/app-billing-react@1.0.1@molecule/app-breadcrumb-react@1.0.1@molecule/app-bulk-action-toolbar-react@1.0.1@molecule/app-canvas-engine-react@1.0.1@molecule/app-feature-canvas-react@1.0.1@molecule/app-card-grid-react@1.0.1@molecule/app-carousel-react@1.0.1@molecule/app-feature-chapter-list-react@1.0.1@molecule/app-chart-wrapper-react@1.0.1@molecule/app-charts@1.0.1@molecule/app-chatbot-tester-react@1.0.1@molecule/app-checklist-react@1.0.1@molecule/app-class-schedule-react@1.0.1@molecule/app-code-block-react@1.0.1@molecule/app-collapsible-section-react@1.0.1@molecule/app-color-picker-react@1.0.1@molecule/app-color-swatch-picker-react@1.0.1@molecule/app-comparison-row-react@1.0.1@molecule/app-contact-display-react@1.0.1@molecule/app-contact-form-react@1.0.1@molecule/app-cookie-banner-react@1.0.1@molecule/app-copy-link-field-react@1.0.1@molecule/app-countdown-react@1.0.1@molecule/app-currency-display-react@1.0.1@molecule/app-danger-zone-react@1.0.1@molecule/app-data-table-ui-react@1.0.1@molecule/app-day-timeline-react@1.0.1@molecule/app-detail-header-react@1.0.1@molecule/app-detail-page-layout-react@1.0.1@molecule/app-diff-viewer-react@1.0.1@molecule/app-drawing-toolbar-react@1.0.1@molecule/app-e2e-fixtures-default@1.0.1@molecule/app-editor-layout-react@1.0.1@molecule/app-editor-toolbar-react@1.0.1@molecule/app-embed-snippet-react@1.0.1@molecule/app-embeddable-chat-widget@1.0.1@molecule/app-emoji-reactions-react@1.0.1@molecule/app-empty-state-react@1.0.1@molecule/app-exif-panel-react@1.0.1@molecule/app-faceted-search-react@1.0.1@molecule/app-feature-flag-row-react@1.0.1@molecule/app-file-card-react@1.0.1@molecule/app-file-dropzone-react@1.0.1@molecule/app-filter-bar-react@1.0.1@molecule/app-flashcard-card-react@1.0.1@molecule/app-floating-action-button-react@1.0.1@molecule/app-flow-canvas-react@1.0.1@molecule/app-footer-react@1.0.1@molecule/app-forum-thread-row-react@1.0.1@molecule/app-gradebook-react@1.0.1@molecule/app-feature-graph-view-react@1.0.1@molecule/app-habit-streak-card-react@1.0.1@molecule/app-header-react@1.0.1@molecule/app-heatmap-react@1.0.1@molecule/app-help-button-react@1.0.1@molecule/app-hero-metric-card-react@1.0.1@molecule/app-home-page-react@1.0.1@molecule/app-http-inspector-react@1.0.1@molecule/app-i18n-default-react@1.0.1@molecule/app-iap@1.0.1@molecule/app-ide-react@1.0.1@molecule/app-feature-image-canvas-react@1.0.1@molecule/app-image-gallery-editor-react@1.0.1@molecule/app-image-gallery-react@1.0.1@molecule/app-inbox-row-react@1.0.1@molecule/app-info-display-react@1.0.1@molecule/app-inline-edit-react@1.0.1@molecule/app-integration-card-react@1.0.1@molecule/app-job-listing-row-react@1.0.1@molecule/app-join-code-react@1.0.1@molecule/app-kanban-board-react@1.0.1@molecule/app-kpi-card-react@1.0.1@molecule/app-layer-panel-react@1.0.1@molecule/app-leaderboard-list-react@1.0.1@molecule/app-leaderboard-row-react@1.0.1@molecule/app-legal-pages-react@1.0.1@molecule/app-list-item-row-react@1.0.1@molecule/app-listing-card-react@1.0.1@molecule/app-log-viewer-react@1.0.1@molecule/app-loyalty-tier-badge-react@1.0.1@molecule/app-map-drawing-react@1.0.1@molecule/app-maps@1.0.1@molecule/app-medication-row-react@1.0.1@molecule/app-message-bubble-react@1.0.1@molecule/app-message-preview-react@1.0.1@molecule/app-mind-map-canvas-react@1.0.1@molecule/app-mini-calendar-react@1.0.1@molecule/app-moderation-queue-react@1.0.1@molecule/app-muscle-group-badge-react@1.0.1@molecule/app-nav-chrome-react@1.0.1@molecule/app-newsletter-signup-react@1.0.1@molecule/app-node-editor-panel-react@1.0.1@molecule/app-note-card-react@1.0.1@molecule/app-notification-badge-react@1.0.1@molecule/app-notification-center-react@1.0.1@molecule/app-notification-feed-react@1.0.1@molecule/app-notifications-page-react@1.0.1@molecule/app-now-playing-bar-react@1.0.1@molecule/app-nps-distribution-react@1.0.1@molecule/app-oauth-buttons-react@1.0.1@molecule/app-oauth-logos-react@1.0.1@molecule/app-onboarding-modal-react@1.0.1@molecule/app-order-timeline-react@1.0.1@molecule/app-page-chrome-react@1.0.1@molecule/app-pagination-bar-react@1.0.1@molecule/app-password-generator-react@1.0.1@molecule/app-password-strength-meter-react@1.0.1@molecule/app-photo-lightbox-react@1.0.1@molecule/app-feature-piano-roll-react@1.0.1@molecule/app-plan-updated-page-react@1.0.1@molecule/app-presence-indicator-react@1.0.1@molecule/app-price-range-slider-react@1.0.1@molecule/app-pricing-page-react@1.0.1@molecule/app-pricing-table-react@1.0.1@molecule/app-progress-bar-react@1.0.1@molecule/app-progress-rings-react@1.0.1@molecule/app-pwa-default@1.0.1@molecule/app-qr-code-react@1.0.1@molecule/app-quiz-card-react@1.0.1@molecule/app-rating-display-react@1.0.1@molecule/app-rating-form-react@1.0.1@molecule/app-reading-progress-bar-react@1.0.1@molecule/app-related-items-card-react@1.0.1@molecule/app-relative-time-react@1.0.1@molecule/app-reorderable-list-react@1.0.1@molecule/app-reputation-badge-react@1.0.1@molecule/app-rich-text@1.0.1@molecule/app-root-error-boundary-react@1.0.1@molecule/app-rule-builder-react@1.0.1@molecule/app-safe-link-react@1.0.1@molecule/app-search-autocomplete-react@1.0.1@molecule/app-secret-row-react@1.0.1@molecule/app-section-divider-react@1.0.1@molecule/app-service-worker-default@1.0.1@molecule/app-settings-actions-bar-react@1.0.1@molecule/app-settings-container-react@1.0.1@molecule/app-settings-panel-react@1.0.1@molecule/app-share-link-card-react@1.0.1@molecule/app-shell-layout-react@1.0.1@molecule/app-sidebar-layout-react@1.0.1@molecule/app-slide-thumbnail-react@1.0.1@molecule/app-social-share-buttons-react@1.0.1@molecule/app-sort-picker-react@1.0.1@molecule/app-sparkline-react@1.0.1@molecule/app-spreadsheet-grid-react@1.0.1@molecule/app-stage-timeline-react@1.0.1@molecule/app-status-badge-react@1.0.1@molecule/app-status-summary-react@1.0.1@molecule/app-status-timeline-react@1.0.1@molecule/app-stepper-react@1.0.1@molecule/app-storefront-chrome-react@1.0.1@molecule/app-subscription-plan-card-react@1.0.1@molecule/app-survey-question-react@1.0.1@molecule/app-tab-filter-react@1.0.1@molecule/app-tag-input-react@1.0.1@molecule/app-feature-thread-tree-react@1.0.1@molecule/app-three-viewer-react@1.0.1@molecule/app-ticker-row-react@1.0.1@molecule/app-time-slot-picker-react@1.0.1@molecule/app-timeline-react@1.0.1@molecule/app-top-nav-layout-react@1.0.1@molecule/app-trace-waterfall-react@1.0.1@molecule/app-feature-track-lane-react@1.0.1@molecule/app-transactions-table-react@1.0.1@molecule/app-feature-transport-bar-react@1.0.1@molecule/app-trend-chip-react@1.0.1@molecule/app-typing-indicator-react@1.0.1@molecule/app-vendor-card-react@1.0.1@molecule/app-video-call-controls-react@1.0.1@molecule/app-video-player-react@1.0.1@molecule/app-feature-video-scrubber-react@1.0.1@molecule/app-feature-video-timeline-react@1.0.1@molecule/app-video@1.0.1@molecule/app-vite-config-default@1.0.1@molecule/app-vote-cluster-react@1.0.1@molecule/app-weather-card-react@1.0.1@molecule/app-webhook-inspector-react@1.0.1@molecule/app-whiteboard-canvas-react@1.0.1@molecule/app-wiki-page-header-react@1.0.1@molecule/app-word-cloud-react@1.0.1@molecule/app-ui-angular@1.0.1@molecule/app-angular@1.0.1@molecule/app-ui-react-native@1.0.1@molecule/app-react-native@1.0.1@molecule/app-ui-react@1.0.1@molecule/app-react@1.0.1@molecule/app-ui-solid@1.0.1@molecule/app-solid@1.0.1@molecule/app-ui-svelte@1.0.1@molecule/app-svelte@1.0.1@molecule/app-ui-vue@1.0.1@molecule/app-vue@1.0.1@molecule/app-bond@1.0.1@molecule/app-bonds-default-react@1.0.1@molecule/app-locales-adjustment-slider@1.0.1@molecule/app-locales-ai-chat@1.0.1@molecule/app-locales-annotation-pin@1.0.1@molecule/app-locales-announcement-bar@1.0.1@molecule/app-locales-audio-player@1.0.1@molecule/app-locales-audio-recorder@1.0.1@molecule/app-locales-auth-shell@1.0.1@molecule/app-locales-auth@1.0.1@molecule/app-locales-author-bio-card@1.0.1@molecule/app-locales-badge@1.0.1@molecule/app-locales-battery@1.0.1@molecule/app-locales-bias-indicator@1.0.1@molecule/app-locales-billing@1.0.1@molecule/app-locales-biometrics@1.0.1@molecule/app-locales-bluetooth@1.0.1@molecule/app-locales-brightness@1.0.1@molecule/app-locales-bulk-action-toolbar@1.0.1@molecule/app-locales-calendar@1.0.1@molecule/app-locales-camera@1.0.1@molecule/app-locales-canvas-engine@1.0.1@molecule/app-locales-carousel@1.0.1@molecule/app-locales-charts@1.0.1@molecule/app-locales-class-schedule@1.0.1@molecule/app-locales-clipboard@1.0.1@molecule/app-locales-code-block@1.0.1@molecule/app-locales-code-editor@1.0.1@molecule/app-locales-color-picker@1.0.1@molecule/app-locales-common@1.0.1@molecule/app-locales-contact-form@1.0.1@molecule/app-locales-contacts@1.0.1@molecule/app-locales-cookie-banner@1.0.1@molecule/app-locales-copy-link-field@1.0.1@molecule/app-locales-danger-zone@1.0.1@molecule/app-locales-day-timeline@1.0.1@molecule/app-locales-drawing-toolbar@1.0.1@molecule/app-locales-embed-snippet@1.0.1@molecule/app-locales-embeddable-chat-widget@1.0.1@molecule/app-locales-emoji-reactions@1.0.1@molecule/app-locales-exif-panel@1.0.1@molecule/app-locales-feature-animation-canvas@1.0.1@molecule/app-locales-feature-audio-effects-rack@1.0.1@molecule/app-locales-feature-audio-mixer@1.0.1@molecule/app-locales-feature-audio-waveform@1.0.1@molecule/app-locales-feature-barcode-scanner@1.0.1@molecule/app-locales-feature-canvas@1.0.1@molecule/app-locales-feature-chapter-list@1.0.1@molecule/app-locales-feature-graph-view@1.0.1@molecule/app-locales-feature-image-canvas@1.0.1@molecule/app-locales-feature-map-drawing@1.0.1@molecule/app-locales-feature-piano-roll@1.0.1@molecule/app-locales-feature-thread-tree@1.0.1@molecule/app-locales-feature-three-viewer@1.0.1@molecule/app-locales-feature-track-lane@1.0.1@molecule/app-locales-feature-transport-bar@1.0.1@molecule/app-locales-feature-video-scrubber@1.0.1@molecule/app-locales-feature-video-timeline@1.0.1@molecule/app-locales-file-card@1.0.1@molecule/app-locales-file-dropzone@1.0.1@molecule/app-locales-filesystem@1.0.1@molecule/app-locales-filter-bar@1.0.1@molecule/app-locales-flashcard-card@1.0.1@molecule/app-locales-flow-canvas@1.0.1@molecule/app-locales-footer@1.0.1@molecule/app-locales-forms@1.0.1@molecule/app-locales-geolocation@1.0.1@molecule/app-locales-gradebook@1.0.1@molecule/app-locales-habit-streak-card@1.0.1@molecule/app-locales-haptics@1.0.1@molecule/app-locales-health@1.0.1@molecule/app-locales-heatmap@1.0.1@molecule/app-locales-help-button@1.0.1@molecule/app-locales-hero-metric-card@1.0.1@molecule/app-locales-http-inspector@1.0.1@molecule/app-locales-http@1.0.1@molecule/app-locales-i18n@1.0.1@molecule/app-locales-iap@1.0.1@molecule/app-locales-icons@1.0.1@molecule/app-locales-ide@1.0.1@molecule/app-locales-inline-edit@1.0.1@molecule/app-locales-join-code@1.0.1@molecule/app-locales-keyboard@1.0.1@molecule/app-locales-layer-panel@1.0.1@molecule/app-locales-legal-default@1.0.1@molecule/app-locales-live-preview@1.0.1@molecule/app-locales-loyalty-tier-badge@1.0.1@molecule/app-locales-maps@1.0.1@molecule/app-locales-medication-row@1.0.1@molecule/app-locales-message-bubble@1.0.1@molecule/app-locales-mind-map-canvas@1.0.1@molecule/app-locales-moderation-queue@1.0.1@molecule/app-locales-motion@1.0.1@molecule/app-locales-network@1.0.1@molecule/app-locales-newsletter-signup@1.0.1@molecule/app-locales-nfc@1.0.1@molecule/app-locales-notification-center@1.0.1@molecule/app-locales-notifications-page@1.0.1@molecule/app-locales-now-playing-bar@1.0.1@molecule/app-locales-nps-distribution@1.0.1@molecule/app-locales-oauth-buttons@1.0.1@molecule/app-locales-onboarding-modal@1.0.1@molecule/app-locales-pagination-bar@1.0.1@molecule/app-locales-password-generator@1.0.1@molecule/app-locales-password-strength-meter@1.0.1@molecule/app-locales-photo-lightbox@1.0.1@molecule/app-locales-plan-updated-page@1.0.1@molecule/app-locales-pricing-page@1.0.1@molecule/app-locales-progress-rings@1.0.1@molecule/app-locales-push@1.0.1@molecule/app-locales-qr-code@1.0.1@molecule/app-locales-quiz-card@1.0.1@molecule/app-locales-rating-form@1.0.1@molecule/app-locales-react-native-ui@1.0.1@molecule/app-locales-react-ui@1.0.1@molecule/app-locales-react@1.0.1@molecule/app-locales-reading-progress-bar@1.0.1@molecule/app-locales-reputation-badge@1.0.1@molecule/app-locales-root-error-boundary@1.0.1@molecule/app-locales-routing@1.0.1@molecule/app-locales-rule-builder@1.0.1@molecule/app-locales-screen-orientation@1.0.1@molecule/app-locales-search-autocomplete@1.0.1@molecule/app-locales-secret-row@1.0.1@molecule/app-locales-settings-actions-bar@1.0.1@molecule/app-locales-settings-panel@1.0.1@molecule/app-locales-share-link-card@1.0.1@molecule/app-locales-share@1.0.1@molecule/app-locales-social-share-buttons@1.0.1@molecule/app-locales-solid-ui@1.0.1@molecule/app-locales-solid@1.0.1@molecule/app-locales-sort-picker@1.0.1@molecule/app-locales-splash-screen@1.0.1@molecule/app-locales-spreadsheet-grid@1.0.1@molecule/app-locales-stage-timeline@1.0.1@molecule/app-locales-status-bar@1.0.1@molecule/app-locales-status-dashboard@1.0.1@molecule/app-locales-storage@1.0.1@molecule/app-locales-subscription-plan-card@1.0.1@molecule/app-locales-survey-question@1.0.1@molecule/app-locales-svelte@1.0.1@molecule/app-locales-tag-input@1.0.1@molecule/app-locales-time-slot-picker@1.0.1@molecule/app-locales-trace-waterfall@1.0.1@molecule/app-locales-ui@1.0.1@molecule/app-locales-utilities@1.0.1@molecule/app-locales-version@1.0.1@molecule/app-locales-video-call-controls@1.0.1@molecule/app-locales-video-player@1.0.1@molecule/app-locales-video@1.0.1@molecule/app-locales-vote-cluster@1.0.1@molecule/app-locales-vue@1.0.1@molecule/app-locales-whiteboard-canvas@1.0.1@molecule/app-locales-wiki-page-header@1.0.1@molecule/app-locales-word-cloud@1.0.1@molecule/app-badge@1.0.1@molecule/app-battery@1.0.1@molecule/app-biometrics@1.0.1@molecule/app-bluetooth@1.0.1@molecule/app-brightness@1.0.1@molecule/app-device-calendar@1.0.1@molecule/app-camera@1.0.1@molecule/app-clipboard@1.0.1@molecule/app-contacts@1.0.1@molecule/app-filesystem@1.0.1@molecule/app-geolocation@1.0.1@molecule/app-haptics@1.0.1@molecule/app-health@1.0.1@molecule/app-keyboard@1.0.1@molecule/app-lifecycle@1.0.1@molecule/app-motion@1.0.1@molecule/app-network@1.0.1@molecule/app-nfc@1.0.1@molecule/app-push@1.0.1@molecule/app-screen-orientation@1.0.1@molecule/app-share@1.0.1@molecule/app-splash-screen@1.0.1@molecule/app-status-bar@1.0.1