<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://openforma.web.app/changelog</id>
  <title>Forma changelog</title>
  <subtitle>What changed in Forma, newest first.</subtitle>
  <updated>2026-11-09T00:00:00Z</updated>
  <link rel="alternate" type="text/html" href="https://openforma.web.app/changelog"/>
  <link rel="self" type="application/atom+xml" href="https://openforma.web.app/changelog.xml"/>
  <author><name>Waqar Sayyed</name></author>
  <entry>
    <id>https://openforma.web.app/changelog#2026-11-08-sql-server</id>
    <title>Your SQL Server database, in your reports (1.2.0)</title>
    <updated>2026-11-09T00:00:00Z</updated>
    <link rel="alternate" type="text/html" href="https://openforma.web.app/changelog#2026-11-08-sql-server"/>
    <summary>Run one read-only script in SSMS and drop its result in the box: Forma reads your database’s tables, views, keys and stored procedures without connecting to it, and a report reads your database by connection name, as DevExpress writes it, never with a password. The AI binds to your real columns when you share the layout, the Preview prints your sample rows as DevExpress would, a report is checked against a newer export, and on your own PC the companion reads the database itself.</summary>
    <content type="html">&lt;p&gt;Run one read-only script in SSMS and drop its result in the box: Forma reads your database’s tables, views, keys and stored procedures without connecting to it, and a report reads your database by connection name, as DevExpress writes it, never with a password. The AI binds to your real columns when you share the layout, the Preview prints your sample rows as DevExpress would, a report is checked against a newer export, and on your own PC the companion reads the database itself.&lt;/p&gt;&lt;h4&gt;New&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;A database’s layout, from Forma’s read-only script or an SSMS “Generate Scripts” file, attached in the box or pasted on the Data tab: tables, views, keys, and each stored procedure’s parameters, defaults and result columns, read without running it, with the reason when a procedure cannot be described. Kept in this browser, never in the cloud.&lt;/li&gt;&lt;li&gt;Sample rows from the tables you pick, by a second read-only script, so the AI can match a printed column to the right field by what it holds.&lt;/li&gt;&lt;li&gt;The Data tab browses the database: find a table, view, procedure or column, see each one’s types and keys, choose what the report reads (a table with the joins its foreign keys suggest, a stored procedure, or a checked SELECT of your own) with its filter, sort and limit, and bind a field to the control you last selected on the Preview.&lt;/li&gt;&lt;li&gt;Write into the report: the query becomes DevExpress’s own SQL data source, connected by name as your application’s config knows it, never with a password, with its report parameters (defaults, several values, a lookup list and one that depends on another), master-detail bands and calculated fields. The report opens in the designer with its fields listed and no connection needed, and the Spec shows the config entry and the code that runs it.&lt;/li&gt;&lt;li&gt;Share a database with the AI (Send names and sample values to the AI on the Data tab, on when you attach its layout) and a report designed from a picture or a description binds to its real columns: the AI says which table, view or procedure it read, Forma checks every name against the layout and writes the data source itself.&lt;/li&gt;&lt;li&gt;With a database shared, the chat changes what the report reads in place: “bind it to dbo.usp_Sales”, “add the customer’s phone”, “filter by a region parameter”, and “group by Region”, which adds a group band with a total when asked. Each can be undone.&lt;/li&gt;&lt;li&gt;Custom SQL from a sentence on the Data tab, and any custom SQL checked against your database’s layout: a table or column it does not have is refused, not run.&lt;/li&gt;&lt;li&gt;Sample rows in the Preview: with your database’s sample rows, it fills from them in one click, with no request. Each field prints as DevExpress prints it from SQL Server (a decimal at its scale, money at four places, a code with its leading zeros), the query’s joins and filter apply, and each record’s detail lines print under it.&lt;/li&gt;&lt;li&gt;The Data tab shows a report’s own SQL data source, its connection, queries, fields and parameters, and can browse the layout it uses as the database.&lt;/li&gt;&lt;li&gt;A report checked against a newer export of your database: a renamed column, a changed type, a stored procedure’s changed parameters or a table the export lacks, each with its fix in one click. A query naming a column the database no longer has stops DevExpress printing the report at all.&lt;/li&gt;&lt;li&gt;A Docs article on your SQL Server data: the scripts, the steps, the connection name and running the report in your application. Features and Compare say what Forma does with a database, and that it never connects to one.&lt;/li&gt;&lt;li&gt;Read from my SQL Server: with Forma running on your own PC and its companion (RepxDesigner.exe --serve), the Data tab reads your database’s layout and sample rows straight from it, with no script to copy. Connections are added in the companion, and a login’s password stays there, encrypted for your Windows user.&lt;/li&gt;&lt;li&gt;Live rows: on your own PC the Preview prints the report from your database with the parameter values you type. A stored procedure runs only when you press the button that names it.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Improved&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;The column mapping says how sure each match is, by heading and by the values the column shows, and offers the likeliest field in one click; on a bound report, a field your database lacks is renamed to the right one in one click.&lt;/li&gt;&lt;li&gt;The Preview asks for each parameter by its type: a number, a date, Yes or No, a choice from the report’s lookup list (one list depending on another), or a box for each value when it takes several.&lt;/li&gt;&lt;li&gt;AI test data for a report on a database comes as the database holds it, and is typed from its columns.&lt;/li&gt;&lt;li&gt;Open in designer gives the designer the report’s connection from your PC, so its preview works at once, and saving still writes only the connection’s name.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Changed&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;The privacy policy says what of your database goes to the AI and when (only what you share), and that no connection string, login or password is ever asked for, stored or sent.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Fixed&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Binding one label no longer hides the Data tab’s table mapping behind a message about a table nobody had bound.&lt;/li&gt;&lt;li&gt;A parameter that only the report’s SQL query uses is no longer reported as unused.&lt;/li&gt;&lt;li&gt;A detail report under a filtered report no longer prints another record’s lines.&lt;/li&gt;&lt;li&gt;A redesign keeps the report’s data source and the parameters its queries use, which the AI could drop.&lt;/li&gt;&lt;li&gt;Writing a data source over another removes the parameters only the old one used, and writing one again no longer gives a parameter a second lookup list, which DevExpress refused to open.&lt;/li&gt;&lt;li&gt;After you add your key and press Check key, the model menu in the chat box lists the models your key can use straight away, instead of only after the page is reloaded.&lt;/li&gt;&lt;li&gt;A report restyled in your house style no longer loses its styles when DevExpress opens it. Two of its parts could share an internal number, and DevExpress then dropped the whole style sheet without a word.&lt;/li&gt;&lt;li&gt;A report with a detail band no longer warns that its Mockup and its file disagree on the number of sections.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Security&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;A report that arrives carrying a database login or password leaves Forma with the connection by name only, and the REPX checks say so.&lt;/li&gt;&lt;li&gt;Signing out removes the database layouts and sample rows kept on the device, as it does your uploads.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://openforma.web.app/changelog#2026-11-08-app-check</id>
    <title>A check that requests come from Forma (1.1.1)</title>
    <updated>2026-11-08T00:00:00Z</updated>
    <link rel="alternate" type="text/html" href="https://openforma.web.app/changelog#2026-11-08-app-check"/>
    <summary>Requests to Forma’s database now carry a check from Google reCAPTCHA, through Firebase App Check, that they come from Forma’s own pages. It runs only once you sign in or open a shared report.</summary>
    <content type="html">&lt;p&gt;Requests to Forma’s database now carry a check from Google reCAPTCHA, through Firebase App Check, that they come from Forma’s own pages. It runs only once you sign in or open a shared report.&lt;/p&gt;&lt;h4&gt;Security&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Requests to Forma’s database carry a token from Google reCAPTCHA, through Firebase App Check, showing they come from Forma’s own pages. It runs only once you sign in or open a shared report, never while you read a public page, and the privacy policy names it.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://openforma.web.app/changelog#2026-11-07-chat-keeps-its-word</id>
    <title>A chat that keeps its word (1.1.0)</title>
    <updated>2026-11-07T00:00:00Z</updated>
    <link rel="alternate" type="text/html" href="https://openforma.web.app/changelog#2026-11-07-chat-keeps-its-word"/>
    <summary>What the chat changes now shows everywhere at once, Try again starts from where your message did, and a reply’s Undo and Redo survive a reload. The chat follows what you asked it to remember, and a new report gets a project of its own.</summary>
    <content type="html">&lt;p&gt;What the chat changes now shows everywhere at once, Try again starts from where your message did, and a reply’s Undo and Redo survive a reload. The chat follows what you asked it to remember, and a new report gets a project of its own.&lt;/p&gt;&lt;h4&gt;New&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Mark an area: a tool at the right of the Preview, or the M key, lets you drag a box over the report to select every control in it, ready to ask the chat about or to change with the selection toolbar. V goes back to selecting one at a time.&lt;/li&gt;&lt;li&gt;The message box has a Tools menu, opened with its / button or by typing / in an empty box: add a total, group the records, add a calculated column, change the paper or restyle the headings, each a sentence to finish and send. A palette switch beside it turns your house style on or off for the next request.&lt;/li&gt;&lt;li&gt;Seven new pages: Pricing (Forma is free, and what each AI costs), Examples (six reports to open in the workspace with one click), Security, a comparison with DevExpress’s own AI and how to bring Crystal Reports and SSRS reports across, About with a press kit, running Forma yourself, and a FAQ of its own. Security reports have a security.txt at the address scanners look for.&lt;/li&gt;&lt;li&gt;Settings, under General, downloads every project you have saved as one .zip and shows which version of Forma you are using. A new Forma tab gets your key from one already open, a part of the workspace that fails no longer takes the rest with it, and its Report this problem opens an issue with the details filled in.&lt;/li&gt;&lt;li&gt;The Docs page covers the whole workspace: choosing your AI, a tour of the workspace, data and binding, sharing, memory and the report library, what the checks find, and every keyboard shortcut. Its search now reads every article, and &amp;quot;Did this answer your question?&amp;quot; opens an issue on GitHub with what you typed.&lt;/li&gt;&lt;li&gt;Forma can be installed as an app from the browser, with its own icon on the home screen.&lt;/li&gt;&lt;li&gt;A code block in a reply or the Spec has its own Copy, and dragging files over the workspace shows “Drop to attach”.&lt;/li&gt;&lt;li&gt;Asking for a different report while one is open starts a new project for it, and keeps the one you had.&lt;/li&gt;&lt;li&gt;The chat can now duplicate a control, change a band’s height, add borders, lines and page numbers, set a number format, bind a control to a field, and style a whole table row or column, each in seconds rather than a redesign.&lt;/li&gt;&lt;li&gt;Ask the chat to “undo that”, and it takes back the last change.&lt;/li&gt;&lt;li&gt;Forma says when you are offline, and what you write waits for the connection rather than failing.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Improved&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;The model menu names the Gemini model behind every choice, Auto included, once your key has made its first request.&lt;/li&gt;&lt;li&gt;Forma has version numbers again: this release is 1.1.0, Settings shows the version you are using, and every release is published on GitHub with its notes, so watching the repository’s releases tells you when a new one is out. The roadmap and where to get help are linked from the README.&lt;/li&gt;&lt;li&gt;Signed in, your projects list loads its names alone and fetches a project when you open it, instead of downloading every project in full; an autosave no longer sends the whole project to your other open tabs.&lt;/li&gt;&lt;li&gt;Sharing a report needs a verified email address, and an account can share up to 100 reports at once. New passwords are at least eight characters, and the Docs explain how to end a session somewhere else. On the website the workspace no longer reaches for the designer companion on your computer, which some browsers asked permission for.&lt;/li&gt;&lt;li&gt;The home page and the other public pages load about a quarter less code: the workspace now loads only when you open it. Pages you have visited open again without a connection, and a notice says when you are offline and when you are back.&lt;/li&gt;&lt;li&gt;The public pages are easier to read and to use without a mouse: the orange text and buttons meet WCAG contrast in both themes, every page has a skip link, the phone menu and the account menu behave as a dialog and a menu should, and the footer links GitHub, Discussions, issue forms and the licence.&lt;/li&gt;&lt;li&gt;The terms now say which law governs them: the laws of India, keeping the protections your own law gives you that no agreement can set aside.&lt;/li&gt;&lt;li&gt;The privacy policy and terms describe everything Forma stores and sends, including OpenRouter, a local AI, dictation and autosave, with your rights, how long things are kept and what the free Gemini tier does with requests. There is an accessibility statement, a list of the open-source code Forma ships, and the contact form says when a message did not go through.&lt;/li&gt;&lt;li&gt;Every page has its own title, description and link preview, so a shared link to the docs or the changelog says what it is.&lt;/li&gt;&lt;li&gt;The public pages can be read without JavaScript and are listed for search engines; the workspace, sign-in and shared reports are kept out of search results.&lt;/li&gt;&lt;li&gt;Reading a picture starts sooner on a later visit: the text reader and Forma’s models are kept by the browser until they change.&lt;/li&gt;&lt;li&gt;A long conversation keeps its newest messages in full and still remembers what you asked at the start, and a long pasted schema no longer crowds out the rest.&lt;/li&gt;&lt;li&gt;Edits made in the chat are quicker on a large report: each version of it is read once rather than three or four times.&lt;/li&gt;&lt;li&gt;On a phone the message box stays at the foot of the screen and the reply card is a sheet over the report, so the report keeps its room.&lt;/li&gt;&lt;li&gt;A screen reader now hears when Forma starts, and what came of a request when it ends: a reply, a report ready, a question or a failure.&lt;/li&gt;&lt;li&gt;The keyboard stays where you are: after Stop, queueing, an edit or a withdrawal it is back in the box, and Forma’s questions move it from one to the next.&lt;/li&gt;&lt;li&gt;A tab in the background says when a question is waiting for you or a request failed, not only when something is ready.&lt;/li&gt;&lt;li&gt;With Local AI or OpenRouter the box shows which model answers, and opens Settings to change it.&lt;/li&gt;&lt;li&gt;Each project keeps its own unsent message, as a chat app keeps a draft per chat, and messages waiting in the queue survive a reload.&lt;/li&gt;&lt;li&gt;When it was sent, the versions, Edit and Withdraw sit under your message, no longer hidden behind its arrow.&lt;/li&gt;&lt;li&gt;The conversation’s Markdown export now includes Forma’s questions and what became of a redesign it asked about.&lt;/li&gt;&lt;li&gt;The chat, its questions and the labels it adds follow what you asked Forma to remember, not only a new report.&lt;/li&gt;&lt;li&gt;A redesign is given everything you asked for in the conversation, and the controls you selected, not only your last message.&lt;/li&gt;&lt;li&gt;A question asked while Forma’s questions are waiting is answered, and they stay open; “Create a report” with nothing about what it shows is asked about first.&lt;/li&gt;&lt;li&gt;The chat sees each control’s colours, borders, number format, totals and expressions, and says when something is not in what it can see.&lt;/li&gt;&lt;li&gt;Every page loads faster: the first script a visitor downloads is 112 kB smaller.&lt;/li&gt;&lt;li&gt;When an edit cannot be made, or brings a problem the checks find, the chat takes one more pass at it before offering a redesign.&lt;/li&gt;&lt;li&gt;A chat reply shows what it cost beside its time, and a report’s count includes every answer it took.&lt;/li&gt;&lt;li&gt;A picture sent while a report is open is read with your message: the chat can answer about it or change the report to match, rather than always redesigning it.&lt;/li&gt;&lt;li&gt;Steer changes the request under way rather than replacing it, Escape in the box stops Forma, and Ctrl+K can stop it or open the request log.&lt;/li&gt;&lt;li&gt;A reply’s Undo is the same step as the Undo in the corner, with a Redo beside it, and both are still there after a reload.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Changed&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Projects, Revisions, Batch and the report library open as the conversation does, a floating panel over the report in its place, closed with the same Collapse button, so the report no longer moves aside when one opens.&lt;/li&gt;&lt;li&gt;The conversation panel opens and closes as Google Stitch’s does: Forma’s mark at its top left, Collapse at its top right, and folded, a small square with the mark that turns to Expand when you point at it.&lt;/li&gt;&lt;li&gt;Every option in the workspace has one place now: projects and Settings in the sidebar, Share and Export in the bar, the project’s Rename, Duplicate, Archive and Delete behind the button before its name, and help, What’s new, the command menu and the shortcuts in the ? at the corner, which links the docs, the FAQ, Discussions and the privacy notice too.&lt;/li&gt;&lt;li&gt;The conversation is one thread in a panel down the left of the report, as Google Stitch now has it: every request with its replies, the message you are reading pinned at the top, and the message box at the panel’s foot. Search and download are in the panel’s header, an eye on a message shows on the Preview what it changed, and folding the panel gives the report the whole width.&lt;/li&gt;&lt;li&gt;An empty canvas says “No report yet”, and the reply card folds with a clear minimise mark instead of two dots that looked like someone typing.&lt;/li&gt;&lt;li&gt;Only a message that starts “Remember” or “From now on” is kept as a memory. “Always…” or “Never mind…” now goes to the chat, which acts on it.&lt;/li&gt;&lt;li&gt;Stop pauses the messages waiting in the queue, with Resume to send them on; a question from Forma or a failed request pauses them too.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Fixed&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;The home, Features and Docs pages describe Forma as it is today: settings worked out for you, OCR for scans and photos, the Preview and its exports, the chat editing in place, Batch running two or three at once from a folder, and the Apache-2.0 licence.&lt;/li&gt;&lt;li&gt;A tab left open while Forma is updated reloads itself once for the new version, instead of breaking on the next thing it opens.&lt;/li&gt;&lt;li&gt;An address that is not a page now says “Not found” with a proper 404, rather than showing the home page.&lt;/li&gt;&lt;li&gt;Copy works on a page without a secure connection, and says so when the browser refuses the clipboard.&lt;/li&gt;&lt;li&gt;Speaking a message stops when you send or start typing, so nothing heard afterwards refills the box, and the mic says your browser sends the sound to its own speech service.&lt;/li&gt;&lt;li&gt;Words queued while a file is attached now take the file with them, and the queue says how many go.&lt;/li&gt;&lt;li&gt;Searching the requests marks what it found in the card rather than hiding replies, and the search, the card and the log stay in step.&lt;/li&gt;&lt;li&gt;Folding the card keeps answers and edits you were typing, and the card makes room for the open request log.&lt;/li&gt;&lt;li&gt;A failed request says so once, an old error clears when you send the next one, a file being read says so, and “Edit text” or a starting point no longer replaces what you had typed.&lt;/li&gt;&lt;li&gt;A memory such as “Tahoma instead of Arial” or “never use Letter” is read the way you meant it.&lt;/li&gt;&lt;li&gt;A project started with “hello” takes its report’s title once it has one.&lt;/li&gt;&lt;li&gt;In a right-to-left report the chat aligns and edits the cell you mean, and two controls with the same name can each be changed.&lt;/li&gt;&lt;li&gt;An answer cut off part way changes nothing and says so, and turning a custom-size page to landscape keeps its size.&lt;/li&gt;&lt;li&gt;Bold or a colour on a whole table now reaches every cell, a colour change is described as one, and text written over two lines prints over two.&lt;/li&gt;&lt;li&gt;A local AI or OpenRouter that fails says so in its own words, not Google’s, and a local model’s context that is too small, or a reasoning model that wrote no answer, is named.&lt;/li&gt;&lt;li&gt;When a model is busy, Forma no longer falls back to one it was just refused by, and the chat keeps to the lighter models before the one your reports use.&lt;/li&gt;&lt;li&gt;If the AI fails while changing an open report, the report stays as it was instead of being replaced by a rough draft.&lt;/li&gt;&lt;li&gt;Forma’s questions can be answered after a reload, a message queued during a picture’s reading waits its turn, and a stopped reply no longer claims a change it did not make.&lt;/li&gt;&lt;li&gt;A change made in the chat, from the selection toolbar or by dragging on the Preview now shows on the Mockup and in the Spec as well.&lt;/li&gt;&lt;li&gt;Try again and editing a message start from the report as that message found it: an edit is not made twice, and a first report is designed again rather than refined.&lt;/li&gt;&lt;li&gt;A message is saved as soon as you send it; if the page closes before Forma answers, it says so and offers Try again.&lt;/li&gt;&lt;li&gt;A report that could not be made marks its request as failed, with Try again, rather than looking answered.&lt;/li&gt;&lt;li&gt;A change you make on the Preview while Forma is answering is kept when the answer lands.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Security&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;The chat no longer exports or opens the designer on its own: it offers a button, so words written inside a report or a picture cannot make it act.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://openforma.web.app/changelog#2026-11-07-settings-account-ocr</id>
    <title>Settings, your account and the OCR review, redesigned</title>
    <updated>2026-11-07T00:00:00Z</updated>
    <link rel="alternate" type="text/html" href="https://openforma.web.app/changelog#2026-11-07-settings-account-ocr"/>
    <summary>Settings is a list of sections, General, AI, Gemini key and Memory, and a change takes effect as you make it. Your account and the OCR review follow the same design, and this page lists every release.</summary>
    <content type="html">&lt;p&gt;Settings is a list of sections, General, AI, Gemini key and Memory, and a change takes effect as you make it. Your account and the OCR review follow the same design, and this page lists every release.&lt;/p&gt;&lt;h4&gt;New&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;This page, with an Atom feed at /changelog.xml.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Improved&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Settings has its sections on the left, as ChatGPT’s does, and no Save or Cancel: each change applies at once.&lt;/li&gt;&lt;li&gt;Forgetting your kept reports, everything in Memory, or the encrypted key stored in your account asks first.&lt;/li&gt;&lt;li&gt;Your account has the same sections: Profile, Password, Email address and Delete account.&lt;/li&gt;&lt;li&gt;The OCR review has the same look: pages as a segmented control, unsure words as quiet rows, and a switch to leave them out of the report.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Fixed&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;A link to a section of another page, such as the Docs’ FAQ, now reaches that section, and a link to a new page opens at its top.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://openforma.web.app/changelog#2026-11-06-share-and-workspace</id>
    <title>Share a report, and a workspace that behaves</title>
    <updated>2026-11-06T00:00:00Z</updated>
    <link rel="alternate" type="text/html" href="https://openforma.web.app/changelog#2026-11-06-share-and-workspace"/>
    <summary>Share a copy of a report with people you add by email, or with anyone who has the link. The workspace gained a home, a command menu and one Export panel, and an audit fixed 76 rough edges.</summary>
    <content type="html">&lt;p&gt;Share a copy of a report with people you add by email, or with anyone who has the link. The workspace gained a home, a command menu and one Export panel, and an audit fixed 76 rough edges.&lt;/p&gt;&lt;h4&gt;New&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Share: a copy of the report for people you add by email, opened with a verified address, or for anyone with the link. Update the copy or stop sharing at any time.&lt;/li&gt;&lt;li&gt;The empty workspace is a home, with your recent projects and six starting points.&lt;/li&gt;&lt;li&gt;Ctrl+K opens a command menu for every action, and ? lists the keyboard shortcuts. Right-click a control on the Preview for its menu, or type a zoom size.&lt;/li&gt;&lt;li&gt;Export is one panel for every format: .repx, Open in designer, PDF, PDF with outline, Excel, CSV, Word, RTF, HTML and PNG.&lt;/li&gt;&lt;li&gt;The project’s title opens its menu: Rename, Duplicate, Archive and Delete, with a pin beside it.&lt;/li&gt;&lt;li&gt;The ? in the corner holds the theme, Light, System or Dark, and What’s new.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Improved&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Select a control on the Preview and a toolbar floats over the report to format, edit or delete it. A drag is one Undo step.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Fixed&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;A workspace audit fixed 76 things, among them a run still going when another project is opened, Escape closing one thing at a time, menus that work from the keyboard, and an export that fails now saying so.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Security&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;A dependency, sharp, lifted past three high-severity advisories.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://openforma.web.app/changelog#2026-11-05-chat-edits-reports</id>
    <title>A chat that edits your report</title>
    <updated>2026-11-05T00:00:00Z</updated>
    <link rel="alternate" type="text/html" href="https://openforma.web.app/changelog#2026-11-05-chat-edits-reports"/>
    <summary>With a report open, the chat answers questions about it and changes it in place, listing what changed with an Undo. It asks before designing, queues what you send while it works, and floats over the report.</summary>
    <content type="html">&lt;p&gt;With a report open, the chat answers questions about it and changes it in place, listing what changed with an Undo. It asks before designing, queues what you send while it works, and floats over the report.&lt;/p&gt;&lt;h4&gt;New&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;The chat sees the open report and edits it in place: text, position, size, font, colour, alignment, paper and margins, with a list of what changed and an Undo.&lt;/li&gt;&lt;li&gt;Before designing a report from words, Forma asks its questions one at a time, with a summary.&lt;/li&gt;&lt;li&gt;A message sent while Forma works waits in a queue, with Steer, Edit and Cancel.&lt;/li&gt;&lt;li&gt;Edit or withdraw a message and keep the versions it replaced; Try again, copy or rate a reply; search your requests; export the conversation as Markdown.&lt;/li&gt;&lt;li&gt;Speak a message into the box, and the message you are typing survives a reload.&lt;/li&gt;&lt;li&gt;Choose the model in the box, Auto, Fast or Balanced, with today’s requests to each; Settings shows Usage today.&lt;/li&gt;&lt;li&gt;The chat box takes data files: CSV, JSON, Excel, Word, text and SQL.&lt;/li&gt;&lt;li&gt;The conversation is saved with its project, and projects can be renamed, pinned and archived.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Changed&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;The AI writes the .repx alone, and Forma reads the Mockup and the Spec off it, so each report costs about three quarters less output.&lt;/li&gt;&lt;li&gt;From a picture, Forma drafts the report itself and the AI corrects the draft.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Fixed&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;A free-tier key is no longer sent to billing when its daily quota runs out, and Gemini’s newer AQ. keys are recognised.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Removed&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Designing with no key (Forma Offline): a Gemini key opens the workspace, whichever AI you choose.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://openforma.web.app/changelog#2026-11-04-clean-workspace</id>
    <title>A workspace as clean as a chat app</title>
    <updated>2026-11-04T00:00:00Z</updated>
    <link rel="alternate" type="text/html" href="https://openforma.web.app/changelog#2026-11-04-clean-workspace"/>
    <summary>No status bar or progress card, a sidebar that opens and closes as Gemini’s and ChatGPT’s do, settings Forma works out for itself, and OCR in more languages.</summary>
    <content type="html">&lt;p&gt;No status bar or progress card, a sidebar that opens and closes as Gemini’s and ChatGPT’s do, settings Forma works out for itself, and OCR in more languages.&lt;/p&gt;&lt;h4&gt;New&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;The sidebar opens and closes as Gemini’s and ChatGPT’s do, with Ctrl+B.&lt;/li&gt;&lt;li&gt;OCR reads Arabic, Hindi, Urdu, French, German and Spanish, and English handwriting where the site serves the handwriting model.&lt;/li&gt;&lt;li&gt;Add and delete controls, retype a table cell, and select several at once on the Preview.&lt;/li&gt;&lt;li&gt;Batch takes a folder, by picker or by drop, and runs up to three files at once.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Improved&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;A chart’s title, axis titles and legend are read from the source.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Changed&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Working dots and Stop replace the progress card and the status bar.&lt;/li&gt;&lt;li&gt;Forma works out the DevExpress version, the unit, the paper, right to left and the language of a picture from what you bring, instead of asking.&lt;/li&gt;&lt;li&gt;An attached picture is read after you send it, behind the scenes.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://openforma.web.app/changelog#2026-11-02-choose-your-ai</id>
    <title>Choose your AI, and Forma remembers</title>
    <updated>2026-11-02T00:00:00Z</updated>
    <link rel="alternate" type="text/html" href="https://openforma.web.app/changelog#2026-11-02-choose-your-ai"/>
    <summary>Use Google Gemini, a local AI on your own computer (Ollama or LM Studio), or OpenRouter’s free models. Tell Forma what to remember, and it learns the style of the reports you keep.</summary>
    <content type="html">&lt;p&gt;Use Google Gemini, a local AI on your own computer (Ollama or LM Studio), or OpenRouter’s free models. Tell Forma what to remember, and it learns the style of the reports you keep.&lt;/p&gt;&lt;h4&gt;New&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Settings, AI: Automatic (Google Gemini), Local AI (Ollama or LM Studio) or OpenRouter’s free models.&lt;/li&gt;&lt;li&gt;Memory: start a message with “remember” and Forma keeps it, and it learns the style of the reports you export or save. See or change it in Settings, Memory.&lt;/li&gt;&lt;li&gt;Forma’s own model, learned from the structure of reports and never their content, helps the AI on every request.&lt;/li&gt;&lt;li&gt;PDF/A when the report asks for it, with its fonts embedded.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://openforma.web.app/changelog#2026-11-01-ocr-one-chat-box</id>
    <title>OCR in your browser, and one chat box for everything</title>
    <updated>2026-11-01T00:00:00Z</updated>
    <link rel="alternate" type="text/html" href="https://openforma.web.app/changelog#2026-11-01-ocr-one-chat-box"/>
    <summary>Forma reads the text of images and scans with OCR in your browser, and one chat box takes every input: pictures, PDFs, reports and words.</summary>
    <content type="html">&lt;p&gt;Forma reads the text of images and scans with OCR in your browser, and one chat box takes every input: pictures, PDFs, reports and words.&lt;/p&gt;&lt;h4&gt;New&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;OCR with Tesseract.js runs in your browser, so nothing you upload leaves it to be read. Review the text read and build a report from it with no AI at all.&lt;/li&gt;&lt;li&gt;Export Word, RTF, HTML and PNG, and a PDF with the report’s bookmarks as its outline, encrypted under the report’s own passwords.&lt;/li&gt;&lt;li&gt;Right-to-left reports print mirrored as DevExpress mirrors them, and the Preview draws a table of contents, drill-down groups and charts over test data.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Improved&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Line breaks, kerning, font metrics and bold are measured the way DevExpress prints them.&lt;/li&gt;&lt;li&gt;Firestore loads only once you sign in, which makes every page lighter.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Changed&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;The Describe dialog and the OCR button became one chat box that decides from what a message carries.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://openforma.web.app/changelog#2026-10-31-print-as-devexpress</id>
    <title>A Preview that prints as DevExpress does</title>
    <updated>2026-10-31T00:00:00Z</updated>
    <link rel="alternate" type="text/html" href="https://openforma.web.app/changelog#2026-10-31-print-as-devexpress"/>
    <summary>Measured against DevExpress 20.1’s own printed output: groups, totals, formats, filters, subreports, page numbers, page breaks and cross-tabs print in the Preview as they will in the designer.</summary>
    <content type="html">&lt;p&gt;Measured against DevExpress 20.1’s own printed output: groups, totals, formats, filters, subreports, page numbers, page breaks and cross-tabs print in the Preview as they will in the designer.&lt;/p&gt;&lt;h4&gt;New&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Groups nested by their level, totals with their running scope, number and date formats, and the report’s filter and parameters, all over test data.&lt;/li&gt;&lt;li&gt;Detail reports, embedded subreports, formatting rules, cross-band lines and page breaks.&lt;/li&gt;&lt;li&gt;Export CSV byte for byte and Excel cell for cell, as DevExpress exports them.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Fixed&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Millimetre and pixel reports carry their Dpi on every band and control, so they print at size, and the paper is named, so an A4 report no longer prints on Letter.&lt;/li&gt;&lt;li&gt;A cross-tab gets the layout DevExpress needs before it will print one.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://openforma.web.app/changelog#2026-10-28-describe-a-report</id>
    <title>Describe a report in words</title>
    <updated>2026-10-28T00:00:00Z</updated>
    <link rel="alternate" type="text/html" href="https://openforma.web.app/changelog#2026-10-28-describe-a-report"/>
    <summary>Prompt-to-Report designs a report from a written description, Prompt-to-Expression binds a column from a sentence, test data fills the Preview, and DevExpress’s own accessibility checks run on every report.</summary>
    <content type="html">&lt;p&gt;Prompt-to-Report designs a report from a written description, Prompt-to-Expression binds a column from a sentence, test data fills the Preview, and DevExpress’s own accessibility checks run on every report.&lt;/p&gt;&lt;h4&gt;New&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Prompt-to-Report: a report designed from a written description, as DevExpress’s wizard does.&lt;/li&gt;&lt;li&gt;Prompt-to-Expression: bind a column to an expression written from a sentence.&lt;/li&gt;&lt;li&gt;Preview a bound report over test data the AI writes for it.&lt;/li&gt;&lt;li&gt;The accessibility checks DevExpress’s designer runs: contrast, minimum font size and accessible descriptions.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Improved&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;A model that starts repeating itself is cut off and the request retried, instead of running for minutes.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://openforma.web.app/changelog#2026-10-28-version-1-0-0</id>
    <title>Forma 1.0.0 (1.0.0)</title>
    <updated>2026-10-28T00:00:00Z</updated>
    <link rel="alternate" type="text/html" href="https://openforma.web.app/changelog#2026-10-28-version-1-0-0"/>
    <summary>The first numbered release. Nothing in the app changed that day: the number caught up with what had been live since September.</summary>
    <content type="html">&lt;p&gt;The first numbered release. Nothing in the app changed that day: the number caught up with what had been live since September.&lt;/p&gt;&lt;h4&gt;New&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Banded reports with data binding, grouping, parameters, charts and gauges.&lt;/li&gt;&lt;li&gt;A Preview drawn from the .repx file you actually download.&lt;/li&gt;&lt;li&gt;Revisions and Batch on the sidebar.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://openforma.web.app/changelog#2026-09-09-open-source-live</id>
    <title>Forma is open source</title>
    <updated>2026-09-09T00:00:00Z</updated>
    <link rel="alternate" type="text/html" href="https://openforma.web.app/changelog#2026-09-09-open-source-live"/>
    <summary>The repository is public under Apache-2.0: the app itself, the prompt behind it, and the notes on why it works the way it does.</summary>
    <content type="html">&lt;p&gt;The repository is public under Apache-2.0: the app itself, the prompt behind it, and the notes on why it works the way it does.&lt;/p&gt;&lt;h4&gt;New&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;The source is public at github.com/waqarsyd/forma, under the Apache-2.0 licence.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
</feed>
