Unreleased development
Course curriculum checks
- Conflicting template options are refused before a run starts, with every reason and no charge. Course Curriculum refuses, for example, a graduate course under 30 learner hours, a bootcamp over a semester, and units under an hour. The studio shows the reasons and disables Run workflow.
GET /templates/{slug}now returns the rules asparameter_constraints. - A Total Learner Hours of Auto is resolved to a concrete figure for the chosen duration before generation, and the schedule is checked against it: the advisory
education.pacingverifier reports a schedule whose total differs from the hours the run was given, even when its rows add up. - Course Curriculum 1.3 does not search the web. It works from your uploaded documents, so it no longer cites vendor blogs or trend roundups. Search results everywhere now drop excluded domains on every source path, and vendor blog posts and year-stamped roundups are dropped while enough other sources remain.
- A curriculum missing its outcome alignment matrix or assessment rubric, or whose units all share one segment plan and timings, gets one directed revision and then fails, instead of passing with a lower score.
- Course curricula carry their own disclaimer instead of the Education vertical’s general one.
- Template instructions now receive the chosen options. A placeholder such as the learner level previously reached the model unfilled.
Law firm and course templates
- Sixteen new templates. For law firms: practice area pages, attorney biographies, client guides, case results announcements, legal social post sets, demand letters, matter status letters, case chronologies, deposition outlines, mediation statements, contract abstracts, and term sheet summaries. For compliance teams: regulatory change impact assessments. For courses: lesson scripts, assessment item banks, and course workbooks.
- Six new style profiles: Legal Marketing Writer, Plain-Language Legal Explainer, Litigation Support Writer, Transactional Counsel Writer, Instructional Scriptwriter, and Assessment Designer.
- Practice areas. Personal injury, estate planning, immigration, family law, employment, and criminal defense overlays add each area’s forbidden claims, notices, sources, and terminology to legal generations. An overlay only adds rules.
- A template that declares citations optional is no longer held to its vertical’s citation minimum. A legal bio previously needed eight citations.
- Course Curriculum 1.2 adds a total learner hours field, a required outcome alignment matrix, and a scoring rubric.
- Education runs a new advisory
education.pacingverifier, which checks schedule totals and assessment weights. - Landing pages are available in the Education vertical, for course sales pages.
- Nine more templates: CLE presentation outlines, client intake questionnaires, closing checklists, medical practice service pages, prior authorization appeal letters, investor update letters, financial product explainers, property listing descriptions, and property offering memoranda. Three more style profiles: Real Estate Listing Writer, Healthcare Practice Marketer, and Investor Relations Writer.
- An intellectual property practice-area overlay.
- Rule tables for personal injury limitation periods and USCIS filing fees. Only rows checked against their source are used. Twenty-nine USCIS fee rows are checked against Form G-1055 edition 10/16/26, so immigration generations now receive those fees. Limitation periods for 30 jurisdictions are checked against official statute text. A new advisory
legal.uscis_feesverifier flags a USCIS fee in a legal draft that matches no checked row for its form. - Law Firm Practice and Course Production workflow categories, plus a Regulatory Change Impact workflow.
- Signing out now ends the session on the server as well as in the browser, so a copied session cookie stops working at sign-out instead of at its 8-hour expiry.
- The Library’s automatic title repair no longer fails with a 403 behind the production front end, and its row actions are compact.
- Feature Screenplay’s word range now spans its full 5–70 page range (1,250–17,500 words). Scripts over 32 pages, or under 14, were previously recorded as length violations.
- Security updates: Next.js 15.5.28, Sentry 10.76, DOMPurify 3.4.17, zod 4, Pillow 13, pypdf 6.21.2, Brotli 1.2.1 and certifi 2026.10.19, closing published critical and high advisories, including a remote code execution issue in Next.js image optimization.
- Practice area pages, attorney biographies, case results announcements, legal social posts, medical practice service pages, and property listings now require brand review as well as their vertical’s review, like other public marketing.
- Replay reports degraded fidelity when the practice-area overlay a document was generated under has since been revised or removed.
- The
education.pacingverifier converts minutes and hours within a schedule column, excludes subtotal rows from the sum, and treats a column of bare percentages as assessment weights only in a table about assessments, not when the column holds rates or thresholds. - A Feature Screenplay request above the tier’s page ceiling (15 Quick, 35 Standard, 70 Premium) is now charged for the pages written, not the pages requested. A 70-page request on Quick was previously charged five page blocks and delivered one.
- Sources hides revoked versions by default behind a Show revoked control, collapses each to one line, and explains on its history panel why access can no longer change.
- Evidence exposure shows a run’s document title or topic instead of “Generating…”, and marks runs that failed or did not finish.
- Regulatory Radar adds
https://to a watch URL typed without it, and explains when a site refuses automated checks. - A generated API reference: every public endpoint has its own page under API → Endpoint Reference, with parameters, request schema, and a request builder, generated from the API server.
- Four more public endpoints: live generation streaming (
GET /generate/stream/{request_id}, server-sent events), generation history, and a vertical’s allowed templates and style profiles. Request fields now carry descriptions in the reference. - The docs sidebar groups Product pages the way the app does (Create, Documents, Review, Govern, Insights, Configure, Account).
Length and tiers
- Every workflow offers Brief, Standard and Comprehensive lengths plus a custom range. A tier that cannot write the chosen length in its time budget is refused before any credit is charged: Studio shows why and offers the tier that can, and the API returns
422 tier_too_low_for_lengthwith therequired_tier. Previously such runs started, timed out and were refunded. - Quick is not offered in contexts whose verification blocks unverified content.
- A custom range below a workflow’s minimum is allowed with a warning and recorded on the run.
- A run that falls behind asks the writer for a shorter draft that can still finish, instead of timing out.
Truthful run states
- A failed run names the stage it stopped in and why, for example “Timed out after 180 seconds in Writer”, instead of “Something went wrong”. A run that stopped before any check shows its checks as not run rather than failed.
- A completed run shows the recorded quality gate result, how many verifiers ran with their counts by verdict, and the assurance level achieved, instead of “Quality validation: passed” and “Publishable: yes” whenever text existed.
- The progress bar advances with the run; it previously stayed near the start.
- Call Writer no longer shows “Not run” on runs where it finished.
- Stage activity reaches you even when your connection is served by a different server than the one running the generation, and Studio says when the live draft preview is unavailable.
- Publishing jobs stopped by a release policy (a missing approval, a revoked source) show as Held with the reason, not Failed, and can be retried once the condition is met.
- The dossier no longer shows the assurance tile in green when the tier contract was not recorded, and says why a run was not attested.
- The logo shows in the default theme.
Research
- Research searches on your topic’s subject rather than the whole brief, so details about your own organization no longer stop searches from matching published guidance.
- A search that returns nothing is rephrased and retried instead of being dropped.
- Contexts that require many sources search more widely.
- A run whose research finds fewer sources than its context requires stops before any draft is written and is refunded, with a message stating how many were found against how many are required. Previously it wrote a full draft and then failed.
Generation reliability
POST /generateaccepts your ownrequest_idas an idempotency key. Resubmitting it returns the original generation with"duplicate": trueinstead of starting or charging a second one; reusing it for a different template returns409. A malformedrequest_idreturns422. See Safe Retries.- A retried request that the web app resends after a network error no longer reports “Could not start this generation” for a generation that had in fact started.
- Live progress now streams from any server, not only the one running the generation. Progress steps arrive over the existing stream; draft previews still appear only from the server running it.
- A generation interrupted by a server restart is failed and refunded during the restart, rather than about 30 minutes later.
- Two resume requests for one review no longer both run; the second returns
409. - Approval routing, content scoring, the AI-tell check, knowledge-graph extraction and usage analytics that fail after a generation completes are now retried, instead of being skipped for that generation.
Outbound request protection
- WordPress and Ghost connections refuse a site URL that resolves to a private, internal or otherwise non-public network address, that includes a username or password, or that uses a port other than 80 or 443. The connection form reports the reason instead of a credential failure, and the address is checked again before every publish. Publishing failures quote at most a short excerpt of the destination’s error response.
- Connector hostnames are resolved and checked immediately before each sync or live query, so a name that resolves into a private range is refused the same way a literal private address already was. Web-document connectors refuse URLs that carry credentials and no longer send their credential header to a different host after a redirect. A PostgreSQL connector DSN must name a single host.
- Content Health link checks re-check every redirect. A cited link that points at, or redirects to, a non-public address or a port other than 80 or 443 is reported as not checked instead of being contacted.
Signed service identity
- The web app now authenticates each request to the API with a token its server signs per request. The token names one user, states whether the sign-in completed two-factor authentication, and expires after 60 seconds; the API verifies it with a public key. The API no longer accepts a user ID supplied in a request header together with a shared secret, which previously let anyone holding that one secret act as any user.
- Two-factor authentication is now enforced by the API as well as the web app. With two-factor turned on, administrative endpoints, API key creation, two-factor management, and account deletion require a sign-in that completed its second factor.
- API keys receive
403 Forbiddenfrom API key management, two-factor setup and removal, signed-in device management, account profile lookup, account deletion, and administrative endpoints. Generation, content, and other integration endpoints accept API keys as before. - The content analysis panel and the status page now reach the API through the web app instead of calling it from the browser.
Billing consistency
- A Stripe notification delivered more than once is applied once. A repeat no longer re-sends billing emails or reapplies account changes.
- Removing credits after a full refund is recorded once per refunded charge, and a generation charged at the same moment can no longer restore the removed credits.
- Each generation request is charged at most once, enforced by the database as well as by the billing code.
- Credit history pages no longer repeat or skip entries recorded at the same moment.
Scheduled job reliability
- Onboarding and renewal reminder emails are sent at most once each. A scheduled run that was retried, or that overlapped another run, previously could send the same email twice; a renewal reminder could repeat on every re-run inside its window. A send that fails is released so a later run can retry it.
Rate limits across instances
- Sign-in, registration, password reset, verification-email resend and two-factor code checks are counted in the database, so each limit holds across every server instance instead of applying separately on each one.
- Sign-in allows 10 attempts per email address per 15 minutes, counted whether or not an account exists, so a refusal does not reveal which addresses are registered.
- Password reset emails and verification-email resends are each limited to 3 per email address per hour. Neither route had a limit before.
- Two-factor code checks share one budget of 10 attempts per user per 15 minutes across confirming setup, validating at sign-in, turning two-factor off, and the backup-code routes.
- These routes also have a request ceiling per client address. Until the web app passes the visitor’s address through, that ceiling applies to each route’s total traffic.
- A limited request answers
429with aRetry-Afterheader. If the limit cannot be checked, the request is refused with503rather than allowed.
AI-tell handling and Quality Gate enforcement
- Automatic AI-tell replacement no longer changes terms of art. Legal, clinical, financial, political and real-estate content is flagged for revision instead of rewritten, so phrases such as “leverage ratio”, “summary judgment” and “foster care” stay as written.
- Where replacement still runs, it leaves code, links, quotations and reference lists untouched, keeps tense and capitalization, and no longer rewrites named attributions such as “Goldman Sachs analysts note that”.
- The AI-tell ceiling is checked at the Quality Gate on every tier, including Quick. A draft over the ceiling gets one directed revision before it is rejected.
- Under blocking enforcement, a domain verifier that cannot run now fails the generation. Verifiers a template’s document schema requires run even without a selected vertical, and blocking verifier findings get one directed revision first.
- Semantic verification records whether it ran, was off, or failed.
Blog
- The ten-part Building WriterzRoom series is withdrawn from the public blog for revision; its article URLs return not found until it is republished. Other articles, comments on them, and the RSS feed are unchanged.
Bulk review and Premium planning reliability
- Select all decidable reviews returns to the review queue: every pending review you can decide is selectable without opening each one, and each decision is still bound to the version the queue loaded. Queue rows show the document’s own title instead of the template name.
- A Gemini model that the model catalog lists but inference rejects is no longer chosen again. The call moves to the next available Gemini model for that alias, and later calls skip the rejected one.
- The planner can fail over to OpenAI
gpt-6.1-solwhen Gemini and Anthropic are both unusable. It is a failover route only; tier routing is unchanged.
Spend ceilings per stage and per run
- Every pipeline stage has a USD ceiling, and every run has one by tier: Quick $2, Standard $6, Premium $12. Spend is checked when each stage returns.
- Ceilings follow the account spend mode. The default observe mode logs a breach and records it with the run’s usage. Enforce mode stops the run as
budget_exceeded. - Structured artifact and quality-repair calls now record their token usage. A call that reports no usage counts toward spend at an upper bound instead of zero, and each run reports its unmetered share.
Review reasons and separation of duties
- Rejecting, requesting changes on, or waiving a review requires a reason from a fixed list, recorded with the decision and returned by the API as
reason_code. - Policies can require separation of duties: the author cannot approve their own asset, and one reviewer cannot clear two review roles on the same version. Both are checked at decision time and again at release.
20261007000000_add_approval_reason_code migration.
Document titles and Library actions
- Generated documents detect article titles across metadata, heading, bold, and standalone headline formats. The Library repairs eligible automatic template names while preserving custom titles, ambiguous older edits, and concurrent changes.
- Saved names remain authoritative in the document view. Each Library row places its next action beside the title and links directly to the Dossier for assurance details.
- Command Center focuses on assurance and decisions; recent document history is available in the Library.
Clinical case reports and late quality repair
- Clinical case reports use their case-report contract rather than a SOAP-note schema. Templates that forbid SEO metadata go directly from formatting to the mandatory quality gate.
- A quality revision repairs exact passages in the final draft and preserves unaffected content and citations. The repaired draft returns through editorial review and the final gate; unresolved defects still block publication.
- Repair calls share the workflow deadline and reserve time based on the document’s prior review. Structured calls do not repeat implicitly after an SDK failure, and artifact repairs retain the prior document instead of silently restarting generation.
Editor streaming recovery
- Editor streams preserve the original provider error when legacy stream diagnostics fail. Temporary overload, rate limits, and connection faults receive at most one transport retry per generation; invalid requests, credential failures, and exhausted billing remain terminal.
- A retry replaces the incomplete preview, retains reported token usage, and shares the original workflow deadline. Completed edits still pass citation, grammar, contract, and final quality checks.
- Streaming compatibility handles omitted Anthropic delta usage fields and closes SDK streams on completion or failure.
- Studio reconciles final status independently of the live stream. Agent activity reports the latest pass, shows work awaiting revision, and measures the active stage from its own start.
October 2026
October 4: writer compatibility and Community moderation
- The writer replaces the disabled-thinking setting rejected by Claude Opus 5.5 and Sonnet 5.5 with adaptive thinking and medium effort. It preserves the selected models and tier ceilings and remains compatible with the pinned Anthropic SDK.
- Word ranges and completion budgets reserve space for enabled thinking, and rebuilt prompts use the fitted range. Legacy models retain their supported settings.
- SDK transport regressions reproduce the original HTTP 400 and verify completed thinking-plus-text streams for Premium and Quick. All 45 targeted tests passed with simulated API responses; live paid generation has not been validated.
- Mintlify guides and this changelog are refreshed against the changes merged during September 28–October 4. The update includes the current model routes, Studio behavior, verification reporting, prose controls, Library titles, and blog/community participation.
- Removed Blog Comments from the desktop and mobile system sidebar. Administrators open the existing Discussion moderation queue using Manage discussions on Community; the link is hidden from non-administrators. Community remains in the public navigation and footer, and moderation retains its existing role and MFA checks.
October 4: Library titles, blog, and community
- Completed generations save their explicit article heading as the title. Library list and card layouts show title, plain-text preview, and template/style tag in that order. Read-time title inference is removed so user-selected titles remain intact; failed-run titles retain their existing behavior.
- Added the ten-part Building WriterzRoom series to the public blog with rendered Markdown, a complete series index, related reading, and previous/next links. Blog search, category filters, date ordering, sharing, copy-link controls, and the RSS feed at
/blog/feed.xmlhelp readers find and follow articles. - Rebuilt
/communityaround the article catalog and recent approved discussions, with participation guidance, discussion rules, documentation, and support links. Community uses the current public-site styling and is reachable from navigation, footer, blog, and sitemap. - Article comments use existing WriterzRoom accounts with verified email and a chosen public display name. Submissions remain private until approval. Public responses exclude account IDs, email, and moderation history.
- Administrators can approve, reject, or hide comments at
/admin/blog, with role checks, MFA protection, and activity records. Limits of five comments per rolling hour and twenty per rolling day apply across replicas and include pending and rejected submissions. - Restored Draft Checker POST reliability by applying its minute and daily limits as separate decorators. Public pages avoid unnecessary session polling, and optional analytics cannot interrupt checker, home, or sign-up actions.
20261004000000_add_blog_comments migration and regenerated Prisma client through the release pipeline. See Blog and Community, Content Management, and Draft Checker.
October 3–4: evidence, prose, and first-run guidance
- Planning and prose revisions share evidence and language instructions. Nonfiction scenes, dialogue, sensory detail, and first-person accounts require supplied or attributable material. Templates distinguish documented results from estimates and proposals, and missing research remains explicit.
- Blog headings follow the topic and argument. Editorial repairs preserve sentence variation and precise vocabulary, formatting keeps the edited voice, and SEO no longer imposes or rewards a keyword-density band.
- The final body is checked for specific stock scenes and narrator padding. A finding receives one directed revision; a surviving defect blocks completion. Quoted examples, fenced code, and creative contracts are excluded where appropriate, and a scene citation must belong to that scene’s sentence.
- Planner recovery accepts a valid plan wrapped in
content_planand can recover missing key messages from an existing nonempty strategy. Invalid structured output stays separate from provider outages and credential-health failures. - The public Draft Checker applies deterministic vertical checks to pasted text without an account or model call. The homepage brief and checker draft can continue through sign-up using browser storage for up to 24 hours rather than placing draft text in a URL.
- Command Center’s setup checklist opens the next unfinished step, highlights the relevant destination control, and confirms completed steps when the user returns. The first step opens Studio; connecting a publishing target opens the connection form.
- Welcome email, system icons, and public branding use the approved WriterzRoom mark. The welcome message includes practical next steps and a link to notification preferences without promising unassigned access or credits.
October 2–3: Markdown sources, model routes, and profile stability
- Markdown (
.md) is admitted wherever a content template accepts plain text, aligning upload controls and source admission with the parser. - Workflow selection loads the full template schema and moves Style Profiles into view and keyboard focus, including when selecting the same workflow again. Context and workflow cards use category accents; style cards expose tone, voice, and the curated pairing label. List views remain available.
- Quick writing and Standard editing use Claude Sonnet 5.5. Standard and ordinary Premium writing use GPT-6.1 Sol; high-complexity Premium writing and editing use Claude Opus 5.5. Premium formatting, SEO, and publishing default to GPT-6 Luna.
- Haiku is removed from tier-level generation defaults. Sonnet 5 remains on compatible structured stages, and Gemini complexity overrides remain configured. Fallbacks are bounded by the stage and tier’s authorized routes.
- Profile and sidebar photos keep initials visible until an image loads and return to initials on failure.
- Removed unused Tweepy and aligned OAuthlib to 4.0.0, resolving the dependency conflict. Dependency security patches cover pypdf, Tornado, undici, PyJWT, urllib3, and brace-expansion; production-high and all-critical npm advisories remain gated alongside the independent Trivy scan.
October 1: input rejection before execution
- A rejected generation submission appears in Studio as Input check, with the backend field or admission reason. It no longer appears as a failed pipeline with every stage queued.
- A refused HTTP 422 submission creates no workflow or draft and charges no generation credit. Accepted runs retain their request ID, pipeline activity, and execution-failure path.
- Validation diagnostics retain field locations, error types, and the request ID without logging submitted input values.
September 2026
September 28–30: signed-in journeys and verification reporting
- Signed-in navigation includes Visit website, so public pages remain reachable without signing out. Settings uses a grouped overview and focused sections; Profile is an account summary with identity editing in Settings, and unsaved profile changes are protected during navigation.
- Integrations owns publishing connections, Analytics owns usage reporting, and Settings owns API keys. Legacy Settings links retain their destinations through redirects.
- Command Center shows verification coverage and a daily chart of verified, in-violation, and undecided objects, with a separate 0–100% coverage line. Missing denominators remain gaps, and object counts stay distinct from finding totals.
- Reporting windows cover the selected number of UTC calendar dates, including the current date. Review load uses Role / Pending / Overdue rows; overdue is included in pending. Recent content spans the page, and the former Governance Log widget is removed.
- Shared interface density is more compact, with a narrower sidebar and smaller spacing. Dark mode uses layered charcoal surfaces and readable theme tokens. Studio gives the brief more space, keeps run controls above mobile navigation, and wraps long context Continue labels.
- Review Queue adds overdue triage and priority ordering. Claims has a guided first-use state, while Evidence Exposure distinguishes a healthy empty state from a failed read.
Earlier September changes
The entries below describe behavior when each change landed. Later entries and the current product guides take precedence where a journey has changed.September 24: remaining pages and public site
- Command Center Leads With Decisions: Needs a decision and review load now open the page; the assurance posture banner and metric tiles follow as supporting context.
- Analytics Severity Agrees With Itself: The reliability tile and the issue calling it critical now use the same thresholds and colors. Recommendation cards became a compact issue list with severity words and direct actions, and the analysis views sit under the page header.
- Localization First Use: Instead of four zero tiles and an empty panel, the page explains how a variant works and offers Create a variant. Counts appear once variants exist.
- Calendar Agenda View: A new Agenda layout lists the month’s slots by date, and narrow screens open in it. Plan content starts a slot from the header.
- Integrations List by Default: Connection management opens in the list layout; cards remain available.
- Consistent Page States: Loading pages keep the page’s shape instead of a centered spinner, errors and warnings share one notice style across the app, and the not-found and error pages share one layout with the outcome as the page heading.
- Profile Banners: Banner presets no longer borrow the Premium tier’s purple; stored preset names keep working.
- Colors From the Theme: Remaining hard-coded palette colors, including the API docs page, publishing history, the version history panel, and community links, now follow the theme. Unused legacy components were removed.
- Homepage: Two grids of feature cards were replaced by a walkthrough of what a governed document records at each step: brief, evidence, review, and controlled release.
- Settings Rebuilt: Sections are regrouped into You, Content defaults, Connections, and Plan & data, and the address names the section shown (
?tab=). Every field is labelled for screen readers, and forms share one width and a save action at the foot of each panel. Notifications, workflow defaults, and preferred verticals used to report Saved when a save failed; they now say it failed. Deleting a voice profile, revoking an API key, and signing out another device now report a refusal instead of appearing to succeed. The voice-profile delete button is always visible instead of appearing only on hover. Backup codes and new API keys appear in dialogs that stay open until you confirm you saved them. Analytics in Settings is now Usage, and Account is Data & account. - Calendar Request Loop Fixed: In production builds the calendar re-requested its month hundreds of times a second, because the toast helper returned a new function on every render. It now loads each month once.
- Not-Found Page Fixed: Visiting a missing page showed the generic error page instead of Page not found.
- Footer: The System Status link was removed; the page it pointed to is limited to administrators, so other visitors were sent to sign-in.
September 24: review and governance workspaces
- Review Queue Puts the Queue First: The “How the queue works” panel and four count tiles no longer sit above the queue; the counts are one line and the explanation is under About this page. An open review appears beside the list with what is unresolved before release, the decision controls, and the full asset together.
- Review States Stated Outright: A review now says when it is locked by an earlier stage, assigned to another reviewer, or already decided (with the decision’s date and notes), instead of the decision controls simply not appearing. A decision refused because the review changed after it was opened offers Reload review.
- Evidence Exposure Leads With the Answer: When nothing is affected, the page says No affected content instead of four zero tiles and an empty panel. A newer source version is labeled as information, distinct from a revoked source.
- Regulatory Cases: The case list comes before program setup and the new-case form. A case page carries status, revision, and closure readiness in its header, with Assessment, Actions, Evidence, and History sections and the closure panel beside them. A stale closure is flagged at the top.
- Content Health Statuses: Valid, review recommended, stale-source, and dead-link assets each have their own color; all four were previously the same blue.
- Accurate Service Errors: Policies, decisions, claims, Studio, and other pages reported any backend outage as “Adaptive intelligence is unavailable”. The message is now neutral.
- One Notice Style: Errors and warnings on the claims, artifacts, policies, decisions, content-health, and radar pages use one treatment instead of three.
September 24: foundations and navigation
- Navigation Grouped by Work: The sidebar’s Workspace, Production and Intelligence groups, with Intelligence’s two nested subgroups, are replaced by sections named for the work: Create, Documents, Review, Govern and Insights, under Command Center. Brand System, Integrations, Workspace and Settings sit apart under Configure at the foot of the sidebar. Sections collapse and remember their state; Govern and Insights start collapsed, and any section opens automatically when you navigate to a page inside it. Routes and access rules are unchanged.
- Command Palette Reaches Every Destination: The palette kept its own list of pages, which had drifted from the sidebar and omitted Sources, Workflows, Analytics, Integrations and Regulatory Cases. It now reads the same list as the sidebar, in the same groups.
- Readable Default Text Size: The interface was rendered at 90% of the browser’s font size, which shrank body text to about 12.6px and overrode the reader’s own browser setting. It now starts at 100%, and pinch-zoom is no longer disabled on mobile.
- Status Colors Mean One Thing: Warnings, middling quality scores, readiness prompts and near-limit credit usage used the Premium tier’s purple. They now use the warning color, and tier colors appear only where a tier is actually being shown. Success, warning, error, pipeline-status and tier colors are also tuned per theme so they stay legible as text in Light, Dark and WriterzRoom; previously some fell to about 3:1 on the WriterzRoom theme. Primary buttons in the WriterzRoom theme now use a dark label for the same reason, including the older primary buttons on sign-in, settings, checkout, publishing and the marketing pages, which had kept a white label.
- Accessibility Fixes: Collapsed-sidebar links carry their names for screen readers, the current page is announced, the sign-in password toggle and the pricing page’s billing switch are named, call-to-action buttons on the home, solutions and pricing pages are no longer buttons nested inside links, and each page exposes a single main landmark.
- One Icon Family: Every icon in the application now comes from one family (IBM Carbon), mapped by meaning, where it previously mixed a general-purpose set into every page. Sparkle icons that stood for “AI” are replaced by the task they lead to: Studio is a pen, templates a template, brand settings a palette. Provider marks stay genuine: sign-in shows Google’s own mark, and the publish dialog shows each destination’s logo instead of a pencil, briefcase or globe.
- Quieter Surfaces: Cards, panels, buttons and fields no longer carry drop shadows; they share one hairline edge and a small set of corner radii. Shadows remain only on things that float above the page: dialogs, drawers, menus, popovers and tooltips.
- Less Decorative Motion: Lists no longer fade and slide in item by item, cards no longer lift on hover, and arrows no longer nudge. Loading pages show the shape of the page that is coming instead of a spinner. Progress indicators for real work, such as generation, uploads and live status, are unchanged.
- Studio Reorganized Around the Brief: The steps show what you have chosen at each stage. Contexts are a short list with a detail panel and an explicit Continue, instead of a grid that advanced on the first click. The workflow catalog opens as a list with the selected workflow’s full description and its styles beside it; styles say why they are offered rather than showing a bare fit score. The brief puts required inputs first, groups optional sources and advanced settings, and keeps a compact Run settings summary beside it. The run bar names missing inputs and shows the credit cost before you run. Agent activity is one click away instead of always on screen.
- Hidden Context Defaults Now Visible: A context can set a brief field to a value the template does not list (Fintech sets the target audience to financial professionals). That value was applied and submitted but the field looked empty; it is now shown.
- Named Buttons: Twenty-one icon-only delete, close and send buttons across the application now have names screen readers announce.
- Shorter Page Introductions: Pages that opened with two or three sentences of explanation now lead with one line about what the page is for. The full explanation is still there, under About this page.
- Library Excerpts Read as Text: Excerpts taken from a document’s subtitle or stored preview were shown verbatim, so rows displayed HTML tags and Markdown markers. Every excerpt is now plain text.
- Generation, Review and Publication Shown Apart: A single “Completed” badge beside two colored score chips read as “checked and ready”. The Library now has separate Generation, Review and Publication columns, scores as plain numbers with a statement of what they do not check, and one next step per row (Publish, Review, Edit, Open, Restore or Retry). Documents without scores now count as Not scored under Needs review instead of Ready to publish.
- Previews Render the Document: The Library preview showed stored Markdown and HTML as raw text; it now renders the document as it reads, closes with Escape, and returns focus to the row. Publish from the Library opens the document with its destinations already showing.
- One Header for Every Document View: Read, Edit, Regenerate, Versions and Dossier share one header with the document’s title and states and a switcher between them, replacing four different back buttons and a “Go to” list in the editor panel. Switching from Edit saves first; Regenerate asks before discarding unsaved changes, where it previously discarded them silently.
- Document Scores Corrected: The document page multiplied an SEO score already stored out of 100 by 100, so a 55 read as 5500. Scores now read the same on every page.
- Mobile Navigation: The More drawer now keeps keyboard focus inside it and makes the page behind it inert until it closes, and the bottom bar fits 320px-wide screens.
September 15: promotional access and authentication
- Time-limited beta access: Administrators can issue Starter, Professional, or Enterprise access and an explicit credit allocation to up to 100 recipient emails at once. Existing accounts activate immediately; pre-signup grants attach automatically on the recipient’s first authenticated profile lookup. Grants expire and can be revoked without changing authorization roles or Stripe-owned subscription fields.
- Promotion lifecycle hardened: Unspent promotional credits now survive paid subscription renewals until the grant’s own expiry. Claim, revocation, and account deletion use one lock order; deleted accounts terminate their grant; and an hourly sweep persists expiration and records the lifecycle audit event. Grant timestamps are serialized explicitly as UTC.
- Access and billing stay distinct: Signed-in sessions periodically refresh effective role and tier claims, while the Billing tab continues to show only the Stripe-owned plan. Promotional access is shown separately and never routes a promotion-only user into a nonexistent billing portal.
- Sign-in callback 403 fixed: The MFA middleware now permits only the Auth.js callback and sign-in endpoints required to complete authentication while keeping custom TOTP-management APIs gated. Public authentication pages also stop issuing an unnecessary profile request, removing the paired credentials/profile 403 errors.
September 13: publishing and interface fixes
- Command Center Credits Restored: The dashboard’s assurance-posture redesign dropped the credit-balance display it used to carry. A compact balance indicator is back next to the posture banner, linking into Workspace for the full breakdown (monthly allocation, usage) rather than compressing it into a single misleading ratio.
- Checkbox Double-Toggle Fixed: Learning Controls and the Artifacts page’s Table of Authorities checkbox needed two clicks to register one change. The shared Checkbox component rendered a hidden real input plus a separately-clickable overlay div; wrapping that pair in a
<label>made the browser’s native label-click-forwarding fire the hidden input a second time for the same click. The visible box is now the one real, clickable input. - Low-Information Cards Shrunk: MetricItem — the card behind every MetricStrip in the app, including Verified Claims, Dashboard, and Analytics — carried more padding and a larger value size than a label-plus-number tile needs. The admin Generation Operations page’s own bespoke metric cards were migrated onto the same, now-smaller primitive rather than staying a separate, oversized implementation.
- Sidebar Text Tightened: Nav labels dropped from 14px to 13px with tighter tracking, reducing truncation on longer labels in the expanded rail.
- Revoked Sources Gain a Forward Action: A revoked source’s owner previously had nothing left to do but inspect history. An “Upload a replacement” control and the revocation date are now shown inline, matching the API’s own guidance to replace revoked evidence rather than reuse it.
- Calendar Notes Made Resizable: The Plan Content drawer’s Notes field was fixed at two rows with resizing disabled.
- Publishing Page Deepened: “Platform settings” now deep-links to Settings → Publishing instead of the generic Settings landing tab. The page also gained a connected-platforms glance row and platform/status filters over its job history, and its stat cards moved onto the shared MetricItem primitive.
- Platform Connections Consolidated: Settings → Publishing and Integrations previously ran two separate implementations of the same connect/disconnect flow against the same backend. Settings now renders the same component Integrations does; the older, separate implementation is removed. That shared component also gained a card/list view toggle ahead of a larger platform catalog.
September 14: security and privacy hardening
- Content-Security-Policy Now Nonce-Based:
script-srcno longer allows'unsafe-inline'. The policy is issued per request from middleware with a one-time nonce that the framework scripts, the inline theme script, and the service-worker registration all carry, so an injected inline<script>cannot execute. The public marketing and auth surface also receives a strictly smaller policy than the authenticated app — a logged-out visitor no longer carries the dashboard’s backend, storage, and websocket reach. - Session Replay Now Consent-Gated: Sentry Session Replay recorded a sample of every visitor’s session — anonymous visitors on public pages included — with no consent check. Recording now begins only after an explicit cookie-banner acceptance; error monitoring, treated as strictly necessary, continues either way. The cookie banner and Privacy page previously claimed “no tracking or analytics cookies,” which was untrue while replay was active; both now describe error monitoring and consented, masked session replay accurately, and Sentry is listed as a subprocessor.
- Closure Readiness Reads as a Checklist: The regulatory case workbench listed outstanding closure blockers as a plain bullet list. Because case closure is irreversible, the outstanding requirements now render as a gated checklist — a remaining-count with a per-requirement marker for each unresolved item, and an explicit “ready for closure review” state when none remain.
September 14: regulatory verification
- Compliance Deadline Verifier: A new deterministic verifier reconciles a stated compliance deadline against the effective date and period the same document gives for it — an effective date plus a stated compliance period is a computable date, and a deadline that disagrees with it by more than a few days of counting slack is flagged. It reports the check as indeterminate rather than passed when a date is not a real calendar date or a paragraph names more than one period, and it runs in the legal vertical. Like every verifier here, it checks internal consistency, not whether the effective date, the period, or the obligation itself is correct.
September 14–18: marketing analytics
- Consent-Gated HubSpot Attribution: HubSpot’s tracking code loads through a consent-gated loader — only after a visitor accepts the cookie banner, never for anonymous or declined visitors — with its portal id and region environment-driven (unset the env var to disable it). A single consent module now governs both HubSpot and Sentry Session Replay; a typed
track()event layer fans funnel events out to whatever trackers are loaded; and the Content-Security-Policy allows HubSpot’s script, connect, image, and frame hosts. The cookie banner and Privacy page now disclose product and marketing analytics accurately, with HubSpot listed as a subprocessor. - Consent-Gated Meta Pixel: Meta Pixel loads through the same consent layer as HubSpot — the base code and
fbevents.jsare injected only after an explicit cookie-banner acceptance, and a per-request nonce allows the inline stub under the site’s nonce-based CSP.connect.facebook.netandwww.facebook.comare added to the CSP’sscript-src,connect-src, andimg-src. Thetrack()event layer now fans custom funnel events tofbq('trackCustom', ...)alongside HubSpot. The cookie banner copy names Meta Pixel alongside HubSpot and session replay; Meta Pixel is listed as a subprocessor.
September 18: public blog
- Blog: A public blog at
/blogpublishes articles written by the WriterzRoom team, covering AI content production, enterprise publishing, and platform development. The listing page features the newest article as a full-width hero card with a primary accent bar, followed by a two-column grid for the remaining posts; each card shows the article category as a colored pill chip. Article pages render the excerpt as a distinct serif lede paragraph and surface two related articles at the bottom. Blog is linked from the site footer and public navigation.
September 12, 2026
Regulatory case proposals merged in PR #853; deployment is tracked separately:- Case Proposals: Manual applicability and action proposals with inspectable evidence passages, version history, and explicit owner acceptance or rejection. Acceptance updates the case and requires current review/release authorization. Live agent proposal generation remains disabled; the panel supports human-authored proposals only.
September 10, 2026
Review queue organization and client-recovery fixes merged in PR #851; deployment is tracked separately:- Review Categories Added: Reviews can be filtered by qualification — Medical, Legal, Compliance, Brand, Editorial — with the filter applied server-side ahead of the queue’s row limit. A category outside the visible window previously looked empty instead of merely unfetched.
- Global Error Boundary Added: An error thrown outside the normal app shell (root layout, page-level boundaries) now renders the standard failure page instead of a blank screen.
- Mobile Client Recovery: The service worker no longer caches
_next/runtime assets, which could leave an installed mobile client running JavaScript chunks from a previous deployment after a release. Persisted navigation and sidebar state are also now validated before use, so a corrupted or unexpected stored value falls back to defaults instead of breaking startup. - Templates Page Views Added: Card and list view toggles for the template catalog.
September 8, 2026
Case-to-artifact development package merged in PR #848; deployment is tracked separately:- Case Workflows in Studio: Case owners can open Regulatory Memo or Healthcare AI Governance with the saved objective, program scope, jurisdiction, evidence versions and assigned case reviewer. Complete scope reaches the shared agent context without summary truncation. Effective date and remaining template fields are completed in Studio.
- Durable Generation Links: Server-validated admission records bind the original case revision and work request to the generated artifact. Cases list linked runs and dossier links; dossiers provide a return path. Assignment to a case does not grant private artifact access.
- Current Case Inputs at Release: Stale launches and unauthorized associations are rejected before billing. Case edits and changed evidence/reviewer access mark prior results as historical and hold release. Closure transitions alone do not authorize publication or change the generation scope.
- Inherited Evidence Boundaries: New use and review check historical evidence referenced by the case snapshot as well as current attachments. Existing file and context limits remain enforced; launch and readiness checks do not call a model. Applicability and case decisions remain human-controlled.
- TOTP Endpoints Hardened: Verify, validate, and disable now rate-limit to 5 attempts per minute, and submitted codes must match their expected format before reaching comparison.
/api/auth/totp/validatepreviously trusted a caller-suppliedx-user-idheader instead of an authenticated session; it now requires the same session dependency as every other TOTP route. - Request Size Enforcement Corrected: The body-size cap now bounds bytes actually received rather than trusting a client-supplied
Content-Lengthheader, which could previously be omitted or understated to bypass the 10MB limit. - Public Failure Messages Added: Generation and citation failures now return one of a small set of fixed public messages regardless of the underlying error, with raw diagnostics kept in server logs and behind admin-only diagnostic endpoints.
- Admin Operations Panel Added: Recent generation failures are listed by category (citations, timeout, provider access, quality checks, interrupted worker, other) from bounded, redacted projections rather than raw diagnostics.
- Revision Evidence Preserved: A requested revision now carries the same numbered source manifest the original draft used, so a revision pass can’t renumber, drop, or misattribute a citation the first pass already established.
September 7, 2026
Regulatory development increment merged in PR #848; deployment is tracked separately:- Regulatory Programs and Cases: Define company/product scope and open a supervised case from a logged Radar change. The case retains its original scope and change snapshot.
- Case Workbench: Assess applicability, attach authorized source versions, record actions and internal target dates, inspect evidence, and request closure review. Owner review and named workspace review are distinguished.
- Versioned Closure Decisions: Stale edits and decisions are rejected. Case changes require renewed review; revoked evidence makes recorded closure non-current. Transactional history and a bounded JSON export preserve decisions and reasons.
- Template Subject Fields Completed: Reviewed all 60 content templates. Data-Driven Report, Market Analysis, Social Media Campaign, and Strategic Brief now have a required free-text subject field for the topic, organization, market, brand, product, or initiative. The fields appear among commonly used inputs and feed generation instructions and research queries; report headings also use the specific subject. Existing context, goal, and evidence fields remain available.
- Governed Work Requests Added: Specialist launches now carry a versioned workflow, work objective, template and workflow fingerprints, vertical, style, destination, and authorized source versions through generation into the dossier. Unknown workflows, stale versions, template mismatches, and missing objectives are rejected before charging. Regulated workflows also require a jurisdiction and effective date.
- Workflow Readiness Added to Studio: Studio displays server-resolved source rules, required reviews, and scope fields. A readiness check validates workflow inputs, source access, and named reviewers without running generation or calling a model. Readiness does not certify evidence currency, generation quality, billing eligibility, or release approval; generation repeats its admission checks.
- Qualified Reviewer Selection Added: Work requests can name active workspace members designated for legal, medical, compliance, brand, or editorial review. Named reviewers must have separate read access to the selected evidence. Additional selected roles become mandatory, and both initial assignment and the background assignment sweep preserve the requested reviewer. Unavailable selections remain unassigned until corrected or explicitly reassigned; recorded review obligations remain in force alongside current policy.
- Private Sources and Version History Added: Original uploads are retained separately from metadata, with immutable extraction versions, original and extraction fingerprints, and version/access events. Sources can be selected by saved version, inspected with extraction anchors, and downloaded by authorized users. Explicit read or generation-use grants to active teammates cover all versions; source and grant revocation hold further use and release.
- Evidence Accounting Strengthened: Bounded CSV, JSON, spreadsheet, Word, PDF, and text extraction reports coverage and omissions instead of silently sampling files. Server-owned source references replace trusted browser extraction, and a shared context budget prevents silent prompt slicing. Missing or incomplete required evidence stops admission. Scanned PDFs requiring OCR and oversized sources remain explicit limitations.
- Source Dependencies Added: Source owners can inspect their own artifacts that depend on any version of a source, with a total count, up to 50 recent results, and links to the corresponding dossiers. Other members’ private artifacts remain excluded. Uploading a new version does not silently regenerate existing drafts.
- Evidence Access Bound to Review and Release: Live source checks apply at admission, resume, agent boundaries, final persistence, review, and external release. The recorded work request and current source permissions participate in release review binding. Evidence-derived work is excluded from automatic example reuse and embedding writes until transitive consent and reuse lineage are available.
- Workflow Return Paths Fixed: Sign-in, signup, email verification, and MFA now preserve a validated same-site return path. An expiring workflow-only browser hint retains the selection when verification opens another tab in the same browser; invite tokens are not stored in that hint. Sources also consistently uses the authenticated application shell and route protection.
September 4, 2026
- Workspace Knowledge and Connectors Released: A workspace’s documents can now be shared with every active member instead of staying scoped to whoever uploaded them, and connectors can pull material from a system you own into that same shared retrieval — a fixed list of web pages today, or a PostgreSQL table with both scheduled sync and live queries run at generation time. Every retrieved source, workspace or connector alike, carries its scope, a stable locator, and the record it came from through to the citation, the claim-level evidence, and the asset dossier, so content grounded in your own material is never harder to trace than content grounded in the curated corpus. Connectors validate their settings before anything is stored, run with a read-only database session, and refuse loopback, link-local, and cloud-metadata addresses; private network ranges are refused unless a dedicated deployment has explicitly enabled them for that customer’s connectivity. See Corpus and MCP and Workspace.
- Per-Industry Editions Released: Four editions — Legal Professional, Healthcare Professional, Financial Professional, and Enterprise Growth — bundle a set of verticals with the verifiers, compliance policy, curated source packs, and connector types that apply to them. An edition can list a verifier only if one of its verticals actually activates it, and its enforcement level is the weakest of its verticals, so a bundle can never claim more governance than the verticals inside it actually run. See Editions.
- Source Attribution Corrected for Uploaded and Synced Documents: A private or workspace document with no public URL could previously ground a passage and then disappear from its own reference list, because citation and source de-duplication both keyed on URL alone. Sources are now identified by URL or by a stable locator, so an uploaded or connector-synced document is cited, evidenced, and shown in the dossier the same as a web source — and, since it is the customer’s own material, is scored at the same authority a primary source gets rather than the lowest tier a URL-less result previously received by default.
September 3, 2026
- B2B Marketing Vertical Added: An eleventh vertical for demand generation, account-based marketing, and product marketing content, bringing the catalog to 11 verticals. It leads each piece with the ideal customer profile, maps the piece to a funnel stage (TOFU, MOFU, or BOFU) with a single call to action, and treats conversion rates, CAC, and pipeline figures as claims that need a source rather than assertions. Forbidden claims such as “guaranteed ROI” and “#1 in the market” are blocked, conditional claims such as “industry-leading” and “proven” require a cited metric or a specific result, and advisory quantity checks reconcile a stated total against its parts where the draft exposes them. See B2B Marketing.
- Domain Vocabulary per Vertical: Every vertical now carries a glossary of its field’s terms of art that the writer draws on, with acronyms defined on first use, so drafts read as though written by a practitioner in the domain rather than a generalist. Terms are supplied per vertical and injected into the writer’s instructions at generation time; no model weights change.
August 2026
August 30, 2026
- Campaigns Released: The briefs, drafts, calendar entries, approvals, and evidence behind one initiative can now be grouped and reported on together. A campaign links to records the rest of the product already owns rather than copying them, and its rollup aggregates only what has actually been measured — content with no performance data is counted separately instead of averaged in as a zero. A link whose record was later deleted is reported by the label captured when it was made, so a vanished row cannot be mistaken for a genuine decline. See Campaigns.
- Experiments Released: Headlines, CTAs, structures, voice variants, and channel-specific versions can be tested and the result adjudicated rather than eyeballed. The verdict comes from a pooled two-proportion test that is Bonferroni-corrected across challengers and refuses to report a p-value on samples too small for the test to be valid, so “inconclusive” and “not enough data” are distinct first-class outcomes. Only an experiment that established a winner can be promoted into a pattern for future work; promotion is refused otherwise, with the verdict and its reason. See Experiments.
- Audiences Released: Audience profiles — terminology, objections, reading level, decision criteria, preferred evidence, and channel behavior — can be stored once and measured against a draft. Reading level reports a real pass or fail; terminology and objections report presence, and an objection that appears is reported as mentioned rather than addressed, because the check cannot tell a rebuttal from a restatement. A dimension left empty reports as unchecked rather than passing. See Audiences.
- Localization Released: Market variants can be managed by language, region, jurisdiction, and market, with a parity check that verifies the approved claims and required disclosures survived. Because text matching cannot verify a translation, a cross-language item reports as unverifiable — neither a pass nor a failure — until a reviewer who reads both languages attests to it. Numeric parity runs across languages regardless, normalizing decimal separators so a localized figure is not misread as a changed one. Editing a variant clears its stored report rather than leaving a stale green result attached. See Localization.
- Policies Released: Conditional review and compliance rules can be authored by vertical, claim type, channel, risk level, and destination, then evaluated deterministically against a publication context. A rule conditioned on a dimension the context did not supply is reported as indeterminate, naming the missing field, rather than being silently dropped — a required review must not disappear because a channel field was blank. See Policies.
- Signed-Out Access to Intelligence Pages Closed: The middleware route matcher had drifted from the app’s own route list, leaving
/learning,/claims,/content-health,/regulatory-radar, and/requestswithout a server-side redirect for signed-out visitors. All five are now gated, and a test asserts the two lists agree so the same drift fails the build rather than a later review. - Sidebar Scrolling Contained: Scrolling the navigation list no longer chains into the page behind it once the list reaches its top or bottom, and the list’s own scrollbar now shows on hover instead of staying permanently hidden.
- Editor Back Navigation Corrected: Exiting the editor previously left it in the browser history stack, so a second Back press from the content page returned to the editor instead of wherever it had been opened from. Exiting now replaces that history entry instead of stacking on top of it.
- Command Center Assurance Posture Fixed: The dashboard’s assurance strip, “Needs a decision” queue, review load, and vertical posture table were silently disappearing for any account with a pending approval that had a due date — comparing a database timestamp against the current time raised an error the frontend read as “no assurance data” and quietly fell back to the plain metric strip with no indication anything had failed. The underlying due-date value is now normalized before comparing, and the API response serializes that same normalized value rather than a timestamp with no timezone offset, which previously let the displayed countdown disagree with its own severity label outside UTC.
- Collapsed Sidebar Fixed: The active-item highlight in the collapsed navigation rail was pinned to the row’s left edge instead of centered on its icon, hover tooltips on collapsed items were rendering but clipped to nothing by the scrollable list’s own overflow boundary, and a subgroup (“Adaptive Intelligence”, “Planning & Governance”) could not be collapsed while a page inside it was open — the toggle updated internal state but the row stayed forced open regardless.
- Settings Data Loss Fixed: Profile fields for bio and company, and the Corpus & Verticals preferred-verticals list, were accepted by the Settings form and silently discarded on save — the backend had no column for company and no request field for either bio or preferred verticals. Both are now persisted and read back correctly. “Download My Data” now uses the existing, more complete GDPR export instead of a narrower ad hoc one built from the content library alone. A non-functional “Style Profiles” settings tab, unreachable from any navigation link, was removed.
- Review and Validity Notifications Added: Assigning a governed review and finding a broken or stale source during a validity scan now send an email, respecting each account’s notification preference — previously neither did, and the only way to learn about either was to check the dashboard’s decision queue directly.
- Review SLA Hours and Vertical Enablement Made Configurable: An organization can now override how many hours a review role gets before counting as breached, and restrict which verticals its members can generate against — both were previously fixed for every workspace. See Workspace.
August 29, 2026
- Verified Claims Registry Released: Approved facts — a statistic, a regulatory position, a client-specific detail — can be saved once, with their source, vertical, and jurisdiction, then reused as pre-cleared evidence in future generations instead of being re-researched or retyped each time. A claim scoped to one jurisdiction is only offered to generations in that same jurisdiction; a claim with no jurisdiction stays available everywhere. Reapproving a claim past its expiration now requires setting a new expiration rather than silently extending the old one while leaving it expired. See Verified Claims.
- Adaptive Intelligence Released: Generation can now draw on user-specific signals — voice examples recovered from substantial edits, prior work, explicit feedback, measured performance, and the verified claims registry — each independently toggleable, with the underlying evidence visible before it’s used. Model weights are not retrained; approved context is retrieved at generation time. See Adaptive Intelligence.
- Content Health Released: Validity monitoring, running in the backend since August 1, now has a reader. Published, source-grounded assets show their stale-source and dead-link findings directly, with on-demand re-scanning and acknowledgment. See Content Health.
- Regulatory Radar Released: Teams can register the agencies, standards, laws, and guidance relevant to what they publish, and log changes against them with severity, effective date, and a review workflow. See Regulatory Radar.
- Content Requests Released: Stakeholder and client requests can now be captured as structured intake — objective, audience, channel, deadline, priority — and tracked through review and approval before a generation is run against them. See Content Requests.
- Citation-Source Pairing Corrected: A verified claim’s supporting source could survive a generation’s source-count limit while the claim text it was evidence for was trimmed by a separate, independent limit, leaving a citation in the reference list with nothing behind it. The two are now capped together.
- Command Center Gains Assurance Posture: The Dashboard now surfaces governance state alongside operational metrics — pooled verification coverage, a severity-ranked queue of items needing a decision, and open review load broken out by qualification (medical, legal, compliance, brand, editorial). See Dashboard.
- Toast Notifications Restyled: Notifications across the product now use a quieter, lower-third caption treatment, including title-only messages and the writerzroom theme’s color contrast.
August 28, 2026
- Find & Replace Added to the Editor: The editor gained an in-document find-and-replace control, with font and color controls exposed alongside it. Matching runs against the document’s actual text rather than its underlying HTML, so a formatting tag no longer splits a search term across a match boundary.
- Verification Extended to Five Previously Uncovered Verticals: Political gained a verifier checking a poll’s stated margin of error against what its sample size can actually support; Real Estate, one reconciling a stated price-per-square-foot or cap rate against the price and area or income it was computed from; and Enterprise Operations, one checking a stated availability target against the downtime budget it implies. SaaS gained a verifier checking documented HTTP status codes against their standardized reason phrases, and Education one validating a reference’s ISBN check digit and DOI syntax. Ten correctness issues found in review across the five were fixed before release.
- Video Display Fixed: A video element’s aspect ratio is now preserved exactly, rather than cropped by object-fit at small display sizes.
- Design System Consistency Pass: Public marketing pages aligned to the product’s own design tokens.
August 17, 2026
- Section Editing Made Directed and Metered: Rewriting one section of a draft now takes an instruction — “tighten this”, “drop the second example” — so a revision is an edit rather than an undirected reroll. It is priced at 1 credit against the 5 a whole-document Premium Polish costs, which removes the incentive to re-run an entire document to fix one paragraph. The endpoint had been running unbilled: it called a provider on every request with no entitlement check and no deduction. A rewrite that fails, is cut off, or is declined is not charged, and a billing error after a successful rewrite never discards the rewrite.
- Draft Comparison Released: Any two versions of a document can now be read against each other — added and removed lines, word-count delta, and a similarity score. The backend has computed these diffs since versioning shipped and nothing displayed them, so an author could see that thirty lines changed with no way to see which thirty. A similarity above 95% after a polish is called out, because a rewrite that returns what it was given is worth knowing about before paying for another.
- Asset Dossier Released: The content passport now has a reader. Every governed asset gets a dossier showing what supports each cited sentence — with the source excerpt, its retrieval date, and a confidence band — alongside the models that actually served each stage, the template and style profile at the versions that ran, which governance executed, which compliance rules fired, the approvals the asset requires, and its most recent validity scan. The passport exports as JSON for a compliance file, and the page prints. Assets with no governed generation report that plainly rather than showing a partial record. See Asset Dossier.
- Deterministic Replay Surfaced in the Product: Reproducibility checking was API-only. An asset’s dossier now reports per-field drift against what the deployment can currently supply, and returns the generation payload that would reproduce it. Replay remains a normal metered generation rather than a hidden second execution path.
- Calendar Slots Close Their Own Loop: Executing a slot through Generate Now now carries the planned brief into the generation form and reports the finished draft back to the slot, which moves itself to Generated and records the library item that satisfied it. Previously the calendar handed three configuration ids to the generator and heard nothing back, so the brief had to be retyped and every status on the board was a manual claim.
- Calendar Rescheduling Added: Chips can be dragged between days, and the entry drawer gained a date field. Moving a planned piece previously meant deleting it and planning it again.
- Calendar Dropdowns Completed and Grouped: The vertical menu now lists every configured vertical rather than a hardcoded seven, so Education, Enterprise Operations, and Healthcare Legal appear. The style profile menu pages through the full catalog instead of stopping at the first hundred, and both it and the template menu are grouped by category.
- Calendar Day Overflow Made Reachable: A date holding more than three entries showed “+N more” as plain text, leaving those entries unreachable from the grid. It now opens a day view listing all of them. Day cells are also keyboard-operable, and Escape closes the drawer.
- Publishing Failures Made Visible: Choosing a platform with no stored credentials appeared to do nothing. The reason is now shown — including the backend’s own instruction to connect the platform in Settings — and the publish menu marks unconnected destinations before they are clicked. A toast helper that routed notifications to a component the app never rendered was the underlying cause, so failure messages across the product were being discarded silently.
- Machine-Sounding Contrast Phrasing Addressed: Generated prose leaned on the verbless antithesis — “creates noise, not audience growth” — where the negated half has no verb of its own. Writing guidance now teaches the repair rather than a synonym swap, and the editor receives the specific sentences to rewrite. Detection is advisory and confined to a single sentence: the same contrast written as two sentences is ordinary human phrasing, and technical reference prose such as “per attempt, not per call” is left alone.
August 16, 2026
- Specialist Workflows Released: The template catalog now has an outcome-first entry point. Fourteen workflows across seven categories — thought leadership, SEO and growth, sales enablement, regulated content, investor and executive, technical and product, and newsletters and campaigns — name the deliverable rather than the internal template classification. Each card states what the workflow produces, who it is for, and the review problem it removes. See Specialist Workflows.
- In-App Setup Checklist Added: New accounts now see a dismissible checklist on the dashboard with a progress indicator, covering the first run, brand voice, a publishing connection, and a first publication. Step completion is derived from the records each step describes rather than stored, so a step completed elsewhere in the product still reads as done and a deleted record un-does it. The steps match what the onboarding emails already ask for. See Dashboard.
- Command Palette Made Discoverable: The palette is now reachable from a Search entry in the sidebar with its keyboard shortcut shown, rather than only by pressing the shortcut with no indication it existed. See Command Palette.
- Inline Password Validation Added: Sign-up and password reset now validate as you type, with a strength indicator and a requirement checklist. Sign-up gained a confirmation field, so a typo no longer produces an account that can only be recovered by reset.
- Password Length Limit Corrected: Passwords are hashed with bcrypt, which reads at most 72 bytes, but the API previously accepted up to 128 characters — everything past the 72nd was accepted and then ignored. Both the form and the API now stop at 72. Existing accounts are unaffected: sign-in already compared only the first 72 characters, so a longer password set earlier still works.
- Overlay Animations Restored: Dialogs, popovers, selects, tooltips, and the command palette referenced animation utilities that were never defined in this project, so all of them appeared and disappeared with no transition. The utilities are now defined and honour the reduced-motion preference.
- Reduced Motion Honoured in Animated Components: Motion driven by JavaScript previously ignored the operating system’s reduced-motion setting, which only reached CSS-based animation.
- Action Confirmation Behaviour Fixed: Copy-to-clipboard confirmations no longer revert early when a control is used twice in quick succession, and no longer leave a pending timer behind when the view is closed mid-confirmation.
August 13, 2026
- Qualified Reviewer Assignment Released: Organization members can hold medical, legal, compliance, brand, and editorial review qualifications independently of their workspace permissions. Required reviews are assigned deterministically, staged in the Reviews queue, and synchronized back to the content passport.
- Review Recovery and Escalation Added: An hourly sweep repairs missing routes, assigns newly eligible reviewers, and marks overdue work for escalation. Removing a qualification reroutes that member’s pending work.
- Private Corpus Retrieval Added: Authenticated users can upload, list, search, inspect statistics for, and delete their own reference documents. Retrieval combines curated vertical material with only the caller’s private corpus.
- Curated Corpus MCP Added: A separate read-only MCP service exposes curated vertical retrieval without exposing private user uploads. Deployment remains IAM-authenticated and operator-controlled.
- All Ten Vertical Corpus Packs Completed: Healthcare Legal and Enterprise Operations join the existing curated retrieval packs.
- Verified Artifact Workflows Added: Legal analyses, clinical notes, and data briefs can be generated with strict schema decoding or verified independently, with evidence and verifier limitations shown in the product.
- Publication State and Validity Corrected: Publication and validity records are now linked to governed generated assets rather than inferred from unrelated content records.
- Product and API Documentation Reconciled: Counts, pipeline routes, platform coverage, request fields, response envelopes, and base URLs now match machine-readable product and endpoint contracts.
August 1, 2026
- Content Governance Layer Released: Every generation now carries a content passport — a portable production record covering template and style versions, the models that actually served each stage, the sources it was grounded in, what governance ran, which compliance rules were checked, and what supports each claim. See Content Governance.
- Quality Enforcement Moved Before Publication: The quality gate previously ran after the publisher, so content was marked published before anything verified it. Every generation path — Quick or Premium, with SEO or without — now converges on the gate, and only content that clears it reaches publication.
- Assurance Levels Added: Each asset records both the level its tier is designed to deliver and the level the run actually achieved. When a run falls short — a Premium generation whose research returned no sources — the asset is marked as not meeting its tier’s contract rather than inheriting the claim from its price.
- Claim-Level Evidence Recorded: Each inline citation now carries its own record: the claim, the source, the source excerpt, retrieval and publication dates, and a confidence score. Citation checking previously kept only a single pass/fail verdict for the whole document.
- Semantic Claim Verification Added (Premium, opt-in): Term matching cannot tell a claim from its own negation — “the trial found a significant reduction” against a source reporting no significant reduction shares every keyword. Claims can now be checked against their source for contradiction, insufficient support, or ambiguity.
- Vertical Compliance Rules Made Enforceable: Forbidden claims and conditional claims were declared in every vertical and passed to the model as instructions, but never checked against the output. Both are now enforced against the finished draft. Compliance disclaimers that negate a forbidden phrase (“we cannot guarantee any outcome”) are correctly not flagged.
- Approval Orchestration Added: Reviews route automatically from the vertical, the deliverable type, and what the quality checks actually found. Healthcare content routes to medical and legal review in sequence; a contradicted claim routes editorial review onto content that would otherwise need none. Reviews carry SLAs and are recorded on the asset.
- Validity Monitoring Added: A scheduled scan re-checks published assets for stale sources and dead links, relative to the freshness window of the vertical that produced them. Findings can be acknowledged without erasing them, and an asset resurfaces if new problems appear.
- Deterministic Replay Added: Any asset can be checked for reproducibility against current templates, style profiles, and models, then replayed and compared. Drift is reported per field rather than hidden — a replay against a revised template is reported as a re-generation, not a reproduction.
- Provider Failover Added: A rejected provider credential no longer fails a generation. The pipeline reroutes to a healthy provider, records where the work actually ran, and routes around the failed provider for the rest of the process.
July 2026
July 31, 2026
- Citations Suppressed on Non-Citational Formats: Social posts, scripts, lyrics, and landing pages no longer carry citation markers or reference sections. Their output contracts have no place for an attribution, and a citation requirement inherited from a vertical could previously fail the entire generation.
- Citation Failures Made Recoverable: A citation that does not hold up now has its marker removed and the orphaned reference pruned, rather than discarding an otherwise valid draft. Generations still fail where the template or vertical genuinely requires citations.
- Citation Validation Accuracy Improved: Fixed a validator that failed correctly cited documents by comparing citations against the reference list rather than the prose, and a second that cleared a misattributed citation because the same source was cited correctly elsewhere.
- Word Count Contracts Enforced: A word-count target that exceeds a template’s declared hard limit is now clamped to the template’s own range instead of overriding it.
- Quick Tier Research Routing Corrected: Quick generations no longer pull in research for templates that merely support it, while templates whose classification genuinely requires citations still route through research.
- Pipeline Inspector Accuracy Improved: The Studio inspector now reflects the stages a run actually executed rather than a fixed per-tier list.
- Dollar Amounts Preserved: Math rendering no longer consumes currency values in generated content.
- Design System Consistency Pass: Duplicate tokens removed and off-palette gradient, glass, and purple treatments retired across the app.
July 30, 2026
- Quality Gate Corrected for SEO-Skipped Runs: Generations that legitimately skip SEO no longer fail on a readability score that was never computed.
- SEO Output Delivered: SEO-optimized content is now the content that ships; the optimizer previously wrote to a field the publisher did not read.
- Token Accounting and Spend Ceilings Added: Every model call in the pipeline is now instrumented, with real per-generation token and cost totals and a per-account spend ceiling.
- Analytics Corrected: Success rates, word counts, and dashboard metrics now distinguish unavailable data from zero instead of reporting misleading values.
- Authentication Hardened: Constant-time secret comparison and enforced production secret configuration.
- Streaming Output Fixed: Live generation no longer displays every expansion pass concatenated together.
- Verbatim Overlap Measurement Added: Finished content is measured against the sources it was grounded in, recorded on the quality report for review.
- Stylometry Calibrated: Prose distribution targets were recalibrated against real human writing rather than an estimate.
July 29, 2026
- Brand Voice Learned From Examples: Style profiles now demonstrate voice with exemplars instead of describing it with adjectives, and voice is learned from user edits.
- Structural Variance Added: Openings, structures, and conclusions are assigned per generation across 24 templates that previously had none, so repeat generations diverge instead of converging on one formula.
- Divergence Moved to Planning: Anti-repetition is now applied before drafting. The prior approach regenerated finished drafts and produced substantially the same piece.
- File Uploads Reached Full Template Coverage: Reference file uploads are supported across all 50 templates and are wired into the generation prompt.
- Grounding Restricted to Your Own Work: Generation grounds in the user’s own kept content rather than shared sample material.
- Credit Duplication Closed: A provisioning path that could double-credit an account was fixed.
July 28, 2026
- Command Palette Added: Keyboard-driven navigation and item-scoped actions across the app.
- Reversible Actions Made Undoable: Deletes and similar actions now offer undo instead of a confirmation prompt.
- Studio Driven by Live Stream: The generation workspace consumes the event stream directly instead of polling.
- Accessibility Floor Raised: Roving tab order in library and template pickers, keyboard access to disabled-template states, and theme-token conversion for remaining hardcoded surfaces.
- Landing Page Content Corrected: Fabricated marketing claims and generated-copy patterns were removed.
- Dashboard Metrics Fixed: Corrected metrics that were wrong rather than merely unformatted.
July 26, 2026
- Editor Upgraded: Real image insertion, format painter, visible find, and live typography state.
- Real PDF Export Added: PDF exports are now true PDFs and HTML exports are standalone.
- Pipeline Scaffolding Suppressed: Generated content no longer references its own source list or narrates the generation process.
- Grammar Gate Made Length-Fair: Grammar checking scales with document length, recovers from checker outages, and no longer counts deliberate proper nouns as errors.
- Brand Voice Selector Added to Studio: Brand voice profiles can be selected in the production brief.
- Design Pass: Reduced nesting, removed editorial scaffolding, and improved visual rhythm across the app.
July 25, 2026
- Context Engineering Added: A structured context packet is built once per generation and consumed by the planner, writer, and editor, replacing per-agent context assembly. Retrieval and Quick-tier routing are driven from the same packet.
- Enterprise Quality Failures Enforced: Structural quality failures now block completion instead of being recorded and ignored.
- Security Scanning Gated on Deploy: Vulnerability scanning was split into its own job so it actually runs and blocks deployment, and the findings it surfaced were fixed.
- Pricing Model Corrected: Team seats, recurring credits, feature eligibility, and vertical counts were reconciled across product, docs, and tests.
July 23, 2026
- Content Library Crash Fixed: Resolved a crash and HTML-leaked previews in the library, plus save and preview defects on the edit page.
- Adaptive Template Structure Added: The writer adapts structure to the deliverable rather than applying one skeleton.
- Published Metric Added: Analytics now reports published content as a distinct metric.
- Security Patches Applied: High and critical severity dependency advisories were resolved.
July 21-22, 2026
- Hard Generation Deadline Enforced: A generation deadline now survives a blocked pipeline stage, and LLM client timeouts are bounded so a stalled stream cannot hang the pipeline.
- Writer Token Budget Corrected: Token budgets are sized from the maximum word target rather than the minimum, eliminating truncation on longer deliverables.
- Screenplay Export Formatting Fixed: Screenplay exports retain correct formatting.
July 18-19, 2026
- Tier Definitions Unified: Generation tiers now resolve from a single source of truth, with quality mode collapsed into tier and token ceilings raised to use available model headroom.
- Truncation Failures Made Loud: Generations that truncate now fail explicitly instead of completing silently with incomplete content.
- Style Profile Coverage Completed: 21 purpose-built style profiles were added for Political and Fintech templates, completing coverage across all verticals.
- Studio Catalog Views Added: Board and list view toggles for the workflow catalog.
- Reference Documentation Expanded: 50 combination-specific reference documents covering vertical, template, and style pairings.
- Visual Identity Refined: Redesigned favicons and app icons, and dark mode moved to true black backgrounds.
July 12, 2026
- Studio Released: The generation workspace is now a three-stage Studio covering production context, template and style selection, structured production briefs, tier controls, live output, pipeline inspection, and readiness validation.
- Template Schema Loading Corrected: Studio now loads the selected template’s full detail schema before execution, restoring dynamic parameters and preventing workflows from running with missing configuration.
- Responsive Studio Layout Improved: Workflow summary and generation-tier controls use compact horizontal layouts on medium screens, while the inspector and readiness panels move below the output canvas before the mobile breakpoint.
- Content Library Rebuilt: The library now supports table and card views, saved operational filters, quality indicators, publishing destinations, bulk export and deletion, and an output preview drawer.
- Regulated Category Styling Corrected: Legal, Compliance, and Operations tags now retain distinct backgrounds and borders instead of inheriting an undefined category token.
- Template Catalog Rebuilt: Template cards now use responsive two-to-four-column layouts, dynamic catalog counts, complete action labels, structured-input previews, and direct Studio routing.
- Analytics Expanded: Analytics now separates terminal reliability from drafts and in-progress work, distinguishes unavailable metrics from zero, and adds failed output, backlog, average output, scoring coverage, and throughput metrics.
- Integration Routes Corrected: Publishing platform catalog, connection status, connect, and disconnect requests now pass through authenticated Next.js proxy routes instead of returning browser-side 404 responses.
- Publishing Platform Guidance Added: Connection cards now include platform-specific setup descriptions and documentation links for Medium, WordPress, Ghost, DEV, Hashnode, LinkedIn, and Beehiiv.
- Image Generation Withheld: Visual generation remains disabled until quality, persistence, moderation, retry behavior, and auditability meet the production standard applied to written content.
June 2026
June 30, 2026
- Content Originality Framework Added: Generation now rotates opening, conclusion, and structural variants per user and records selections, so repeat generations on the same template read differently instead of converging on one formula.
- Cross-Output Redundancy Detection Added: New content is embedding-compared against a user’s prior outputs. Near-duplicates trigger one automatic re-generation with a divergence directive before the content is finalized.
- Enterprise Quality Report Added: Each generation now produces a context-aware structural audit surfaced on the generation preview.
- Generic Section Headings Reduced: Editor now replaces generic headings with topic-specific ones during its existing edit pass.
- Quick Tier Compliance Hardened: Mandatory disclaimer checks now apply to Quick generations, and requests requiring citations, statistics, or expert quotes route through research.
- Deliverable Labeling Improved: Generation preview, export filenames, and export metadata now reference the actual deliverable name.
June 20, 2026
- Live Generation Streaming Added: Content streams into view during generation.
- Premium Human Review Added: Premium generations can pause after editing for approval, direct edits, or requested changes.
- Generation Status Reliability Improved: Improved status tracking and resume handling for active generations.
June 19, 2026
- Visual Identity Overhaul: Serif headings, improved elevation, and stronger product color usage were applied across the app.
- Knowledge Graph Surfaced: Extracted entities are visible on content detail pages and link related assets.
- Knowledge Graph Extended to Manual Saves: Manually edited drafts receive the same entity extraction coverage.
- Token Consolidation: Category and status colors now use shared design tokens.
- Theme Fixes: Corrected content-display colors and deduplicated pipeline-status logic.
June 13, 2026
- Phantom Attribution Detection Added: Additional anonymous-authority patterns are blocked and regression-tested.
- Per-Source Relevance Gate Added: Research sources require topical overlap before reaching the writer.
- Academic Source Quality Improved: Academic retrieval and source scoring were tightened.
- Truncated Content Detection Added: Formatter rejects incomplete outputs instead of storing corrupted content.
- Citation Accuracy Improved: Reference sections now include only sources cited inline.
- Premium Model Routing Corrected: Premium writer and editor stages use the intended higher-capability models.
- Generation Routing Loop Fixed: Editor expansion exhaustion no longer causes an infinite writer loop.
- Infrastructure Reliability Improved: Corpus initialization, error reporting, and request timestamp handling were hardened.
June 3, 2026
- Workspace Page Added: Organization profiles, team membership, personal credit visibility, and personal activity moved to
/workspace. Shared team billing and organization-wide audit are not included. - Organization API Added: Organization profile, invitation, membership, and role-management endpoints were introduced.
- Publishing Documentation Rewritten: Connection, scheduling, platform, and troubleshooting guidance replaced the previous stub.
- Workspace Documentation Added: Workspace is now part of the Product documentation group.
May 2026
May 30, 2026
- Health Probes Added: Backend and frontend Cloud Run services now use explicit liveness and startup probes.
- OAuth Token Refresh Added: Publishing adapters refresh expiring OAuth tokens before publishing.
- Command Palette Added:
Cmd+Kopens navigation andCmd+Nstarts generation. - Scheduled Publishing Foundation Added: A protected five-minute backend executor can process due jobs. The user-facing creation and management workflow remains planned and is not advertised as available.
- Python Integration Guide Released: Direct
httpxpatterns document authenticated generation, polling, retries, and catalog discovery. A packaged SDK has not yet been released.
May 28, 2026
- Low Credit Warning Email Added: Users are notified when credit balance falls below plan thresholds.
- Dependency Security Updated: Patched high-severity dependency vulnerabilities.
- Session Revocation Enforced: Revoked sessions force immediate sign-out.
May 27, 2026
- Service Level Objectives Published: Generation success, tier latency, writer latency, and API availability SLOs were defined.
- Slack Alert Routing Added: Production alerts now route to Slack and email.
- Security Build Gate Enforced: CI blocks deployment on critical and high vulnerabilities.
- API Integration Reference Expanded: Authentication, endpoint, generation, status-polling, and direct HTTP examples were published for server-side integrations.
- Published URLs Surfaced: Completed publishing destinations appear in the library and content detail pages.
May 24, 2026
- Template Library Expanded: Legal analysis, op-ed, investigative, compliance, and series-bible workflows were added.
- Style Profile Library Expanded: Ten specialized professional style profiles were added.
- Template-Style Compatibility Updated: Matching and quality scoring were extended across the new workflows.
- Post-Write Claim Validation Added: Numerical claims and quotes are checked against research evidence.
May 23, 2026
- Education Vertical Added: Education and Learning received corpus, compliance, pedagogy, and FERPA/COPPA controls.
- Sidebar Navigation Added: Authenticated navigation moved to a collapsible left sidebar.
- Mobile Bottom Bar Added: Mobile navigation now uses a persistent bottom bar and secondary drawer.
May 21, 2026
- PWA Support Added: WriterzRoom became installable on iOS and Android.
- Mobile Layout Improved: Horizontal overflow and action-layout issues were corrected.
- App Shell Completed: Loading, error, 404, and offline states were added.
- Content Library Improved: Category pills and actions were aligned across themes.