Repository navigation
Conversation
…pinner The Nuxt UI contract keeps hand-rolled spinners to media and editor boundaries; this one failed it on every CI run.
… the plan publishChange now calls announceArticle, which the integration test never stubbed, and the hardcoded 14 prior updates predated PREMIUM's raise to 50 credits (25 updates a month).
Signs in through the API and requests a protected page without a browser, so only the server-rendered auth state decides the redirect. Fails with 302 on the useRequestEvent-after-await bug.
…y earned links Discovery searches DataForSEO Content Analysis for the tenant's hosts and name, and the dealer pages of the brands in its product feed, then reads each page to tell an existing link from an opportunity. Requests are sent by the editor from their own mailbox; daily checks mark them won or expired and mark verified links lost after two misses in a row. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Updates 82 declared versions (Nuxt 4.6.0, Nuxt UI 4.11, Vue 3.5.43, Tiptap 3.31, zod 4.6, sharp 0.35, mjml 5, i18n 10.6, AI SDK) and drops unused dependencies and their modules. Direct imports now have direct dependencies instead of relying on hoisting. Node 24.21 is pinned in .node-version for CI, which Nuxt CLI v4 requires; Bun 1.4.2 stays the production runtime. Docs describe the current Nuxt UI and Tailwind stack. Decisions are recorded in docs/maintenance-2026-10-08.md.
Visibility providers read their model IDs from modelRegistry.ts like every other AI task, and routing uses the OpenAI Responses API explicitly. Drops temperature from reasoning tasks, where it had no effect. The editorial GPT-5.6 / routine GPT-6 split is unchanged; an integration test checks the model, reasoning, web search and structured output in the actual HTTP request.
Drops TurnstileWidget, Article/Editor/Chip and Popover, the unused AI image-tool wrappers, findCoverImage, resetGamTokenCache, EXPIRED_TRIAL_TOKEN_LIMIT and SHOPIFY_SCOPES (shopify.app.toml is the only source of scopes). Internal email, i18n and list-query helpers are no longer exported, and client/article lists share one date-range check. Initial assignments the linter rejects are gone and nullable values in the Shopify link, setup checklist, domain settings and translation excerpt are handled.
A sandboxed frame sends `Origin: null`. Writes to /api that carry cookies from such an origin are refused, whatever a browser's SameSite handling of sandboxed frames turns out to be. Reads and cookie-less calls (webhooks) pass.
…r and sandboxed HTML Tenants place widgets in named layout slots (homepage top/middle/bottom, below articles, above the footer) from Settings > Widgets, starting from a gallery of presets. Announcements are on every plan; dividers, CTAs, rates and weather need Pro; HTML also needs a verified own domain. Slots are string keys of a code registry, so a redesign remaps retired slots instead of migrating. Active widgets ride in the public client-site payload, filtered by plan and without the HTML body. Rates (ECB, Coinbase) and weather (MET Norway) load from the stored config through a cached endpoint. HTML is served by /widgets/:id with `CSP: sandbox` minus allow-same-origin, only on the tenant's own domain. A CTA image must be the tenant's own media asset.
Both lists show five rows with an expander. The topic plan gets column headings, a volume bar relative to the busiest topic, difficulty only when topics differ, and its description in a popover. AI visibility moves each open opportunity into its prompt's row (cited domains, editor link, dismiss in the menu) and lists those prompts first, replacing the separate "where AI overlooks you" section.
The sidebar groups places by divider (overview and statistics, content, reach, settings) with outline icons and plainer names; writing an article is a button, "Open site" sits in the footer. Statistics move from a footer modal to /admin/stats. Tags are managed from the article table; custom emoji from the comment emoji picker (tenant admins on their own blog, Pro+) and from Settings > Community.
Nitro resolved the bare specifier 'srvx/node' against the project root, so the production build failed with 'File …/srvx/node does not exist'.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Deploy dev