Changelog

Release notes

Updates to the monthlet app: new features, improvements, and fixes.

1.1.1

LATEST

New

See where the open note is. When you open a note from search, a link or the chat, the sidebar opens the folders above it and highlights the note. Switching tabs does not move the sidebar. You can turn this off with Reveal opened notes in the sidebar in Settings → General. Reveal in Sidebar is added to the note's … menu, the right-click menu of a note and the right-click menu of a tab. The tooltip of a note or spreadsheet tab shows its title and folder path, and the path also appears at the top of notes and spreadsheets. Click a folder in the path to open it in the sidebar.

Choose how folders are sorted in the sidebar. The sort menu now has two parts, Notes and Folders. Folders can be sorted by Name (A→Z), Name (Z→A) or Latest note update (newest first), separately from notes. Folders are now sorted by name from A to Z by default. Before, they followed the direction of the note sort and could appear from Z to A.

Character and word counts in the status bar. The right end of the status bar shows the length of the open note. Notes that contain Japanese (kanji or kana) are counted in characters, and other notes in words. When you select part of the text, the count of the selection is shown too, for example "12 words selected of 1,234 words". Code blocks, math, chart data, link addresses and formatting marks are not counted.

Nested lists. In a bulleted or numbered list in edit mode, press Tab to indent an item and Shift+Tab to move it back. Enter adds an item at the same level, and Backspace in an empty indented item moves it back one level. Nesting is kept in Markdown import and export, in Markdown edit mode, in Word export and for external agents (MCP). Nested lists in imported Markdown keep their levels.

Highlights and footnotes. Text written as ==text== is shown with a light yellow background, and footnote markers such as [^1] are shown in superscript, without the brackets. This works in saved notes, HTML and PDF exports and while editing. The text itself is not changed.

More of an Obsidian vault comes over in folder import. Standard Markdown links such as [text](other.md) now point to the imported note, even when the file was renamed to match its title. [[name]] links also find notes by the aliases in their frontmatter. .canvas files are now listed in the result among the files that were not imported. Help has a new paragraph on what moves over from Obsidian.

XLOOKUP and INDIRECT in spreadsheets. XLOOKUP looks up a value in one range and returns the value at the same position in another. It supports exact, next smaller, next larger and wildcard matches, and searching from the end. INDIRECT turns text such as A1, B1:B3 or 'Sales Oct'!B2 into a reference. When XLOOKUP returns a blank cell, the result is 0, as in Excel.

External agents (MCP) can read a long note in parts. read_note takes offset and limit to read a range of lines, and always returns totalLines. To rewrite a note with update_note or edit_note, the agent must first read the whole note; a partial read can't be used to rewrite it.

External agents (MCP) can see the folder tree. The new list_folders tool returns the folders of the vault, including empty ones, with the number of notes and spreadsheets in each. list_files lists attachments such as images and PDFs with their type and size.

External agents (MCP) can work with tags, links and backlinks. The new update_tags tool adds and removes tags on a note or spreadsheet without changing the body, and create_note accepts tags. [[note name]] in create_note, update_note and edit_note becomes an internal link, and names that match no note are returned in unresolvedWikilinks. The new get_backlinks tool returns the notes that link to a note.

External agents (MCP) can read and add attachments. The new list_attachments tool lists the attachments of a note, and view_image, read_pdf and read_file read them. Images (PNG, JPEG, GIF, WebP) are returned as images. The new add_attachment tool adds an image, video, audio, PDF or text file of up to 20MB to a note. update_tags and add_attachment are available when Allow writing is on in Settings → Connectors → Publish to external agents.

Privacy

monthlet sends an anonymous launch record once a day. It tells monthlet.ai that the app was opened, so we can count how many people use monthlet. Only a random ID for this installation, the date, the app version, your OS and where you got the app (our website or the Microsoft Store) are sent. Note content and file names are never sent. Nothing is sent until you accept the license agreement. To stop it, turn off Send an anonymous launch record in Settings → Advanced. Turning it off also deletes the ID.

Fixes

Asking the AI in the chat to open a spreadsheet failed. It failed even for a spreadsheet the AI had just created. Spreadsheets now open in a tab like notes.

Columns, timelines, key-value lists and tables were squeezed when the note was narrow. When the note area is narrower than 600 pixels, columns now stack, timelines put the date above the text, and wide grids use fewer columns. Table cells wrap their text, and a table that does not fit scrolls sideways. This also applies to exported HTML.

The chat said blocks were updated when nothing had changed. When an update from the AI did not change how the note looks, it was still counted as updated. Such updates are now counted separately, as in "Updated blocks (3) · 1 more didn't take effect". When none took effect, the chat shows "No blocks were updated (the changes didn't take effect)".

The token estimate counted attachments as fixed amounts. With Estimate tokens before sending on, text files and PDFs are now counted in the form they are sent. The estimate below the message box is made on this computer. When a PDF is sent to Anthropic as a PDF, the confirmation after you press Send counts it once with Anthropic's token counting, using your key. For this, the PDF is sent to Anthropic before the confirmation appears, even if you then cancel. While the app stays open, the same file is not sent again unless it or the model changes.

Math blocks showed a vertical scrollbar. The frame of a math block now shows no vertical scrollbar, in the app and in exported HTML. Long formulas still scroll sideways.

The summary of selected cells at the bottom of a spreadsheet was in Japanese in every language. Sum, Average, Min, Max, Count and Numbers now use the app's language. The Sort range… dialog is wider, so the column and order choices are no longer cut off in English.

Help corrections. Help now matches the app for how Google Calendar events appear on the calendar, the items in the sidebar's + menu (including New spreadsheet) and what the status bar shows.

1.1.0

New

External agents (MCP) can replace part of a note. The new edit_note tool replaces a piece of text in the body returned by read_note and leaves the rest of the note as it was. Blocks the edit does not touch, such as charts and nested lists, stay unchanged. It is available when Allow writing is on in Settings → Connectors → Publish to external agents. Like update_note, it needs the version returned by read_note.

Markdown export and read_note follow the Open Knowledge Format (OKF). The frontmatter now starts with type, which is Note unless the note has its own type. Nested values such as sources and generated are kept when you import and export Markdown. read_note now always includes the frontmatter. Notes exported to Obsidian show one more property, type: Note.

Kanban boards. Choose Kanban board under Data in the + menu, or ask the AI, for example "Make my tasks a kanban board". Drag cards between columns or within a column. In edit mode, you can edit column titles and card text, add cards and columns with +, and delete cards with ✕. A column can be deleted when it has no cards.

Link a kanban board to a spreadsheet. Ask the AI, for example "Make a kanban board from the table in Tasks, grouped by the Status column". Each row becomes a card, and each value in the status column becomes a column. The board follows the sheet when the sheet is saved. In edit mode, dragging a card to another column changes the status cell in the sheet, and editing the card text changes the text cell. The sheet name and the status column are shown above the board. Cards and columns are added or removed in the sheet.

Merge table cells. Ask the AI in the chat, for example "Make the month header span two columns" or "Merge the rows with the same item". Merged cells also show in exported .html files.

Text color and underline in notes. In edit mode, select text, right-click and choose Underline or Text color. Pick Red, Orange, Green, Blue, Purple or Gray, Other color… for any color, or Remove color. ⌘B, ⌘I and ⌘U (Ctrl on Windows) turn bold, italic and underline on and off. In dark mode, colors are shown brighter so they stay readable, and the saved color does not change. In Markdown exports, underline becomes <u> and text color becomes <span style="color:…">.

Quick capture from any app. Press Control+Shift+Space in any app to open a small window, write a memo and save it with ⌘↩ (Ctrl+Enter on Windows). The memo is saved as a new note in the top folder of the vault, or at the end of today's daily note. You can paste or drop images into the window. In Settings → General → Quick capture, you can change the shortcut and where memos are saved, and choose Tidy with AI right away to have the AI tidy each memo before saving. Each tidy uses the provider and model chosen in Settings → AI. On a Mac, Start in the background at login starts monthlet without a window when you log in. On Windows, Keep running when the window is closed keeps the shortcut working after you close the window, and starting at login is turned on in Windows Settings → Apps → Startup.

Export notes to Word (.docx). From the note's … menu, choose Export → Word (.docx). Headings, lists, checklists, quotes, code, tables (including merged cells), images, links, bold, italic, text color and underline become Word formatting you can edit. Charts, diagrams, math, kanban boards and similar blocks are added as images.

Fold the content under a heading. Hover over a heading and click ▼ on its left to hide everything up to the next heading of the same or a higher level. Click ▶ to show it again. This works in both view and edit mode. Folded headings stay folded until you quit monthlet and are not saved in the note. Finding text or jumping to a heading inside a folded part opens it.

Due dates and a list of tasks across the vault. Hover over a checklist item or checkbox and click 📅 to set a due date. The date of an overdue task turns red. Click Tasks above the calendar panel to see the tasks in all notes, grouped into Overdue, Today, Next 7 days, Later and No due date. Turn on Show done to include completed tasks, or Only the open note to narrow the list. Click a task to go to it in its note, or click its box to mark it done. Unfinished tasks with a due date also appear on the calendar. In Markdown exports, the due date is written as 📅 2026-10-10, the same form as Obsidian Tasks, and it is read back on import.

Type [[ to link to a note. In edit mode, type [[ in the text to see matching notes. Keep typing to narrow the list, choose a note with ↑↓ and press Enter or Tab to insert a link. Esc closes the list. With Japanese input on, typing 「「 or [[ works the same way.

Search finds text inside images. Text in the images in your notes, such as screenshots and photos, is now included in search. The text is read with the text recognition built into your OS (Vision on macOS, Windows OCR on Windows), and images are not sent anywhere. Results that match only inside an image are marked Text in an image. Images are read in the background, so a newly added image takes a little while to appear in results.

Paste images from the clipboard into a note. In edit mode, press ⌘V (Ctrl+V on Windows) to paste a screenshot or a copied image. It is added as an image block after the block with the cursor, and saved in the note's folder. Copied image files keep their names. PNG, JPEG, GIF and WebP images can be pasted.

The calendar shows times and events written in notes. Write a time on the same line as a date, such as 13:00, 9:30 or 13時, and the note appears at that time. A range such as 13:00〜14:00 becomes an event, and an event that runs past midnight appears on each day. Month view shows the start time, week view shows the time range, and day view lists events in order of time.

Sort a range by more than one column in spreadsheets. Select cells in two or more rows, right-click and choose Sort range…. Use Add sort column to add keys; each key is used when the ones before it are equal. Turn on First row is a header to keep the first row in place and show its text in the column list. When the range covers only some columns, the rest of the sheet stays where it is.

Copied formulas adjust their references. When you copy a formula and paste it into another cell, relative references shift to match the new cell. References with $ stay fixed, and a reference that would move past the top or left edge becomes #REF!.

Filter spreadsheet columns by condition. In a column's filter menu, Filter by condition narrows the rows with conditions such as greater than, between, contains or empty. A search box above the list of values helps you find values in a long list. When both are set, only rows that meet both are shown.

Filters and data validation are kept in Excel files. Exporting to .xlsx and importing from .xlsx now keep column filters and data validation (dropdown lists and number or date ranges). An Excel dropdown that refers to a range of cells is imported with the values that range had at the time.

External agents (MCP) can search notes for an exact string or a regular expression. The new grep_notes tool returns matching lines with line numbers, or the number of matches in each note. It counts every match even when the list is cut off, so an agent can tell when a string does not appear anywhere.

External agents (MCP) can move and rename notes and folders. Turn on Allow moving and renaming in Settings → Connectors → Publish to external agents. Allow writing must also be on. Internal links are updated to the new location. This is off by default.

monthlet remembers the window size and position. The size, position and maximized state are restored the next time you start monthlet. If the display the window was on is no longer connected, the window opens in the center of the screen. The window can now be made as small as 720×480.

Open the release notes from Settings. In Settings → Updates, View release notes opens the release notes on monthlet.ai in your browser. When a new version has been found, it opens the notes for that version.

Fixes

HTML files from outside monthlet loaded images from the internet when opened. When you open an HTML file in your vault that was not made with monthlet, images on the internet are no longer loaded, and a bar with Show external images appears. Clicking it loads them while that tab stays open. The file is not changed.

Yellow notices were hard to read in dark mode. The text of notices such as the folder import result and the message shown when a vault could not be opened now has enough contrast.

Calculated fields made by the AI could show 0. Some models, mostly Gemini, wrote calculated fields in a form monthlet could not read. These fields are now read correctly and saved in the correct form. Calculated fields that are already saved show the right result when opened, and the file is updated the next time the note is saved.

Saved notes and HTML exports were marked as Japanese. The language set in the HTML file now follows the app's language. Browsers use it to read the text aloud and to choose fonts. Existing notes are updated the next time they are saved.

Menus could run past the bottom of the window. Right-click menus and their submenus, such as Text color, now move up to fit in the window. A menu taller than the window scrolls, so you can reach its last items.

monthlet could stop at the Select a Vault screen after starting. This happened mostly on Windows when the vault was in OneDrive and monthlet started right after you signed in. If the last vault cannot be opened at startup, monthlet now keeps trying for a while and switches to the vault when it opens. Clicking a vault on that screen now responds again.

Problem reports could include your user name in file paths. Before a report is sent, the user name part of paths in your home folder, such as /Users/name, is now replaced with <home>. This includes paths outside the vault. Windows vault paths inside tool calls are now replaced with <vault> as well.

The check that stops web page fetching from reaching internal addresses could be bypassed. When the AI fetches a URL from the chat, the address it actually connects to is now checked too.

The AI could answer from the vault summary without reading a spreadsheet. When you asked about values in a sheet, the AI sometimes answered from the part of the sheet in the summary, and could miss items in large sheets. The summary now marks sheets without their values, so the AI reads the sheet before answering.

Blocks the AI added at the same place appeared in reverse order. When you ask the AI to add several blocks at once, they now appear in the order the AI wrote them.

Spreadsheet menus were shown in Japanese in other languages. Right-click menus, the find bar, the cell note and link editors and the column filter now use the app's language.

Notes were squeezed when the window was narrow. The note now keeps at least 260 pixels, and the sidebar and side panels shrink first. Their saved widths come back when you widen the window.

External agents (MCP) could break the frontmatter of a note. update_note and create_note turned the frontmatter at the top of the Markdown into a divider and a heading. read_note now includes the frontmatter, update_note replaces it when given and keeps it when left out, and create_note takes tags and other keys from it.

search_notes stopped at 20 results. Raising limit did not return more, and the result did not say that it was cut off. search_notes now returns up to 199 results, with truncated: true when there are more.

Folder import skipped other files without any notice. Folder import brings in Markdown only. The result now lists the other documents in the folder, such as .enex, .xlsx and .csv, with a count for each type. Excel and CSV files can be imported one at a time.

Electron is updated to 44. monthlet now runs on a version of Electron that still receives security fixes.

1.0.2

Fixes

Links in a table of contents turned the note blank. Clicking an entry in a table of contents, or a link to a heading in the same note, cleared the note area. It now scrolls to the heading, in both view and edit mode.

Asking the AI to turn a list into a table could leave the list as it was. The AI replied that it had updated the blocks, but no table appeared. This happened mostly with requests in English. The AI now removes the list and adds a new table in its place.

The AI read spreadsheets less reliably. When the AI tries to open a spreadsheet as a note, it is now pointed to the sheet's cells, so it answers from the values in the sheet.

Arrows in flowcharts ran over the branch labels. Labels such as Yes and No now sit beside the lines.

Calculated fields showed the operation in English in every language. The result line now shows Sum, Average or Weighted average in the language of the app.

Scrollbars in notes had a white track in dark mode. Code blocks, math and other wide content now use scrollbar colors that follow the theme.

Tooltips did not appear over the icon of an icon button. Hovering over the icon of a button such as + now shows its tooltip.

Some chat attachments were dropped when sending. SVG, BMP and AVIF images could be attached to a chat message but were left out when it was sent. A file that cannot be attached now shows a message listing what can be: PNG, JPEG, GIF and WebP images, PDF and text files. The file picker for chat attachments now uses the app's language.

Web search could be turned on with providers that do not support it. With OpenAI and other providers that cannot search the web, Allow web search is now unavailable, and a note says it works with Anthropic or Google. Your setting is kept.

Claude could search the web more times than "Max searches per chat". When the AI read notes between searches, the count started over. The limit now applies to the whole answer.

Resent and queued messages skipped the token confirmation. When Estimate tokens before sending is on, sending again from an error card and messages queued while the AI is answering now ask for confirmation too. If the estimate fails, a message says so and the message is sent.

The usage total left out Gemini's thinking tokens. Gemini charges thinking tokens as output. The total in Settings → AI now includes them. The ↓ count under each answer is unchanged.

Rate-limit errors from Anthropic did not show the wait time. When your Anthropic key hits a rate limit, the error card now shows how many seconds to wait.

The starter text of the AI instructions note was sent with every request. Its heading and explanation are not instructions, so they are no longer sent. Anything you write or change in the note is sent as before.

Two external agents (MCP) could overwrite each other's changes. When two agents read the same note and both rewrote it, the second rewrite could replace the first. update_note now requires the version returned by read_note, and refuses the rewrite if the note has changed since it was read.

Help corrections. Help now matches the app for where the AI instructions are, the token confirmation, chat attachments and spreadsheet functions.

Security

  • A note can no longer navigate itself to a file on this computer. Content in a note could replace the note area with an attachment or another local file. This is now blocked.
  • Executable files without an extension are not opened from a note. Such files, for example scripts, now show where they are in Finder instead of running. This adds to the check in 1.0.1, which looked only at extensions such as .app and .sh.
  • For custom MCP connectors that connect by URL, operations skip confirmation only if this computer checked them. The list is taken when you add the connector or press "Refresh", not from the vault's settings file.
  • A stray request can no longer cancel a sign-in to a connector in progress.
  • Other checks on connector sign-in pages, web page fetching and design system previews were tightened. They do not change how the app looks or works.

1.0.1

Safer handling of vaults and notes from other people

A vault or a note can come from someone else — a shared folder, a download, a synced drive. 1.0.1 stops settings and links inside such files from acting on your behalf.

  • Auto-approve, web search and the MCP server only take effect if you turned them on on this computer. Vaults you were already using keep their settings. For a vault you open later, a setting that is on in the vault's settings file but that you have not turned on on this computer is treated as off, and a note under the switch says so. Turn it on again if you set it yourself.
  • Custom MCP connectors are checked once before use. A custom connector set up before 1.0.1, or one that came with a vault from elsewhere, is not used until you press "Refresh" on its card and confirm the command or URL it runs. Your saved tokens carry over. Saved tokens are only sent to the server they were registered for.
  • Executable files are not opened from a note. Clicking a link or attachment to an app, a script or an installer (.app, .command, .sh, .exe and similar) now shows where the file is in Finder (File Explorer on Windows) instead of running it. Documents and images open as before.
  • When the AI edits an existing note, it can no longer insert images, video or audio from web addresses. This matches what already happened when it creates a note.
  • Other checks on file paths, block ids and file permissions were tightened. They do not change how the app looks or works.

Fixes

Creating a note from a note's ⋯ menu could fail with no message. For a note at the top of the vault, "New…" in the ⋯ menu never created anything. The same happened from "+" while the AI instructions tab was open. Both now work, and if creating a note does fail, a message tells you.

Clicking an attachment link replaced the note with the file. The file opened in its app, but the note area turned blank or showed the file's text. The note now stays as it is.

1.0.0

New

Connect any OpenAI-compatible endpoint. In Settings → AI, choose OpenAI-compatible (custom) and enter an Endpoint URL and a model name. This works with services such as DeepSeek and with LLM servers running on your own machine. An API key is needed only when the service asks for one, so a local server can be used without a key. If the endpoint lists its models, they appear as suggestions. The endpoint URL is kept on this computer and used in every vault, like your API keys. How well the AI works depends on the model you connect to.

The AI builds notes with nested layouts. When the AI writes a note, it can now place cards, two columns, toggles and tabs inside one another, so a note reads as sections instead of one long column. You can also ask for the look in your own words, such as a colored band, more spacing, or filled cards. Three new blocks are available from the + menu under Data: Feature cards, Badges and Key-value list. Existing notes keep their look unless you ask for a change.

Open a folder as a gallery. Right-click a folder in the sidebar and choose Show as gallery. The notes and spreadsheets in that folder, including its subfolders, open as cards in a tab named after the folder.

Images and PDFs show a preview in the gallery. When Show non-note files in the sidebar is on (Settings → Vault), image cards in the gallery show the image, and PDF cards show their first page. Other files keep their icons.

Choose the image on a note's card. Right-click a note and choose Thumbnail → Choose image…, or right-click an image in the note and choose Use as thumbnail. The card keeps this image even when you edit the note. Choose Thumbnail → Default to go back to the automatic one.

Pin tabs. Right-click a tab and choose Pin. A pinned tab moves to the left and shows only its icon. It stays open when you close all tabs and is reopened the next time you start monthlet. Notes, spreadsheets, the gallery, folder galleries, the calendar, the chat and the note map can be pinned.

A new note is ready to write in. After you create a note, the cursor goes to the chat box if the AI is set up and the chat is open as a panel. Otherwise, the note opens in edit mode.

GPT-5 mini is the default OpenAI model. If you use your own OpenAI key and have not chosen a model, monthlet now uses GPT-5 mini instead of GPT-4o mini. It follows layout instructions more reliably. Its price per token is higher than GPT-4o mini, and you can still choose GPT-4o mini in Settings → AI. A model you have already chosen is not changed.

Fixes

Images in a note were broken on its gallery card. Cards now show images from the note body.

Tabs pointed to the old place after the AI moved a folder. Open notes in the moved folder now follow it to its new location.

The crossed-out 🔗 on one-time charts was hard to see. The line is now clearly visible.

A chart the AI linked to a sheet in an open note could keep showing ⚠. When the link cannot be reproduced from the sheet, it is now removed when the note is saved.

Dragging a block did not scroll the note. In edit mode, dragging a block with ⠿ near the top or bottom edge now scrolls the note, so you can move a block beyond the visible area.

Charts inside columns shrank until the text was unreadable. When a column becomes too narrow, the columns now wrap onto the next row.

Asking the AI to add items to a selected card did nothing. The items are now added inside the card.

Creating a note with the AI sometimes ended with an error. When the note data from the AI cannot be read, monthlet now asks the AI again once, instead of stopping or saving part of the note.

Code blocks were hard to read in dark mode. The code text now has enough contrast. Saved notes are updated the next time you save them.

Long X-axis labels on charts were cut down to one character. Labels are thinned out further so that each remaining label stays readable. Hover over a label to see its full text.

Markdown export dropped the table of contents. It is now exported as a nested list of headings.

An operation of a custom MCP server started by a command could run without confirmation. Such operations now always ask first, and the dialog shows the command that will run.

0.20.0

New

PDFs dropped into a note now show their first page. Drag a PDF such as a receipt or a booking confirmation into a note, and an image of its first page is added to the note. Click the image to open the PDF. The image is saved as a PNG file next to the note, so the page is also visible when you open the note in a web browser.

The AI can read PDFs in your vault. Ask it to read a PDF by name (for example, "Read receipt.pdf and tell me the amount and date"). This works for PDFs that contain text. Scanned PDFs without a text layer cannot be read this way.

Fixes

Charts linked to a sheet stopped updating after the first save. A linked chart showed ⚠ as soon as you edited the sheet and saved, and then never updated again, even for a simple value change. Linked charts now follow the sheet as intended.

Charts built from summarized data always showed ⚠. When a chart was made by totaling or sorting rows (for example, sales per product from a list of orders), it could not be reproduced from the sheet range, so it was flagged right away. Such charts are now created as one-time charts, marked with a crossed-out 🔗. To get a linked chart, make a summary table in the sheet first and link the chart to that range.

Chart axis labels overlapped when there were many items. X-axis labels are now thinned out, and long labels are shortened with "…".

The block tools in edit mode covered the start of the text. The ⠿ / + / ✕ tools that appear to the left of a block sat on top of the first characters, which made typing difficult. In edit mode, the note now leaves room on the left for the tools, so the text shifts slightly to the right when you switch between reference mode and edit mode. The tools also no longer disappear while you move the pointer toward them.

Exporting a spreadsheet to PDF always failed. It now exports.

"Reveal in Finder" did nothing after exporting outside the vault. Exporting to a folder such as Desktop or Downloads and then choosing Reveal in Finder now shows the file.

Dates in timeline blocks were not picked up by the calendar or search. Events that the AI wrote as a timeline now appear on the calendar day view and can be found by date. The search index is rebuilt once on the first launch after the update.

Importing a file ignored the folder selected in the sidebar. Imports now go to the selected folder, so you can also import into an empty folder.

Some dialogs opened from the sidebar were cut off. The new note name prompt and the import and folder settings dialogs are now centered in the window instead of being squeezed into the sidebar.

Dropping a PDF from outside the vault could fail. The copied file is now read correctly.

0.19.1

Fixes

Editable tables were unreadable in the dark theme. With "Enable editable tables" on, clicking a table turned its body rows white with white text, so the cells could not be read. The header and the totals row were fine, which is why it went unnoticed. The grid body now uses the note's background in every theme.

In reference mode, the column menu of an editable table did nothing. After clicking a table to edit it, choosing any item from a column header's ▾ menu (rename, delete, group, sum, average, min, max) closed the grid and dropped the change. The menu now works in reference mode the same way it does in edit mode.

0.19.0

Fixes

The token estimate next to the send button did not match the confirmation dialog. With "Estimate tokens before sending" on, the badge next to the send button counted only the conversation, the open note, and your draft, while the confirmation dialog also counted the fixed part of every request (the instructions and tool definitions the app sends). On a large note the badge read about 1.6k while the dialog said about 11,000, so a threshold chosen from the badge either triggered the dialog every time or never. The badge now uses the same measure as the dialog: it includes the fixed part and adds your draft as you type. Right after opening a note it may briefly show a smaller number until that part is counted.

0.18.3

Fixes

The spreadsheet format toolbar could hide behind the Chat panel. When the note area was narrow (for example with both the Chat and Calendar panels open on a 13-inch screen), the toolbar ran off the right edge and the buttons past "Number format" could not be reached; dropdown menus opened underneath the side panel. The toolbar now wraps onto a second row when space is tight, and every dropdown and panel (number format, currency, font, colors, borders, rounding, zoom, conditional formatting, data validation) is drawn above the side panels and kept inside the window.

The "Number format" button showed ¥ for every currency. With a USD-formatted cell selected in the English UI, the button still read ¥ next to "USD". It now shows the symbol of the cell's currency ($, €, £, ¥ …), or of the language's default currency when none is set.

Importing Markdown dropped nested list items. Indented sub-items under a bullet, numbered, or task list were left out of the note. They are now kept in the same list, indented with a full-width space, and task sub-items keep their checked state. The list hierarchy itself is not preserved, but no text is lost.

"New spreadsheet" asked for a "Note name". The name field now says "Spreadsheet name".

Month view showed "202…" for date-titled notes. A Daily Note's title is its date, so in the narrow month cells every chip read "202…". The day's own Daily Note is now shown as a 📓 mark, and a date-titled note that mentions another day appears in that day's cell in a short form such as "9/6". Hover still shows the full title; the week and day views are unchanged.

A block without a type could be saved from an AI edit. When the AI inserted or appended blocks through an edit and one of the child blocks had no type, it was saved as is and showed up as an unrenderable block. Such children are now dropped at the point of insertion, the same way they already were when a whole note was generated.

Help pointed to the wrong settings tab for the calendar. The calendar and Daily Note help sections said "Settings → General"; the settings live in the "Calendar" tab.

Changes

Update checks no longer send a per-install identifier. The auto-update library used to attach a per-installation ID to each update check. It is now blank. A check only reads the update-info file from the server; nothing that identifies your device or you is sent. The in-app help says so.

Links the AI adds to other notes. When asked to link to another note, the AI is now guided to use the app's own link targets rather than typing a path, which avoids broken links to notes whose names contain spaces.

Japanese UI: the theme editor label "主要色" is now "プライマリ".

0.18.2

Fixes

The Daily Note folder picker only let you choose a top-level folder. Clicking a folder in the picker chose it and closed the picker straight away, so there was no way to get to a folder inside another one, and on first use every folder started out collapsed. Clicking a folder now selects it and opens the folders inside it, so you can go as deep as you need. Your choice is applied when you press "Use this folder"; Cancel leaves the previous setting as it was.

With Gemini, a reply could stop after a few words with "The response was too long." On gemini-flash-lite-latest, roughly one request in five ended before the model had produced any text or edit. When that happens, the request is now sent again once, automatically.

When importing Markdown, an image embed whose file was missing was left as plain text. An Obsidian-style ![[image.png]] pointing at a file that could not be found stayed in the note as the literal text and was not included in the "missing references" count, while the standard ![alt](image.png) form was. Both forms are now handled the same way: the note gets an image block, the missing file is counted, and you can attach the image from the note's attachment bar.

0.18.1

Fixes

The AI's written reply could contain a note's internal block IDs. When you asked for an edit, the explanation that came back could read "I will update the bullet list block (blk_676dfca…)" — an identifier that belongs to the file format and means nothing to you. This had already been fixed for Claude and GPT models but not for Gemini. The reply text is now cleaned for every model, and the surrounding brackets and backticks go with it rather than being left behind as an empty pair.

Search results showed the wrong date for notes touched early in the morning. The date on each search result was the UTC date rather than your local one, so the same note could read as one day older in search than it did in the gallery.

The tag list in the sidebar did not update when you added a tag. With the tag tab open, adding a tag to a note left the list showing its previous state until you switched to another tab and came back.

In English, the calendar's month heading could lose the year. In a narrow docked panel the heading was truncated — "September 2026" became "Sept…" — leaving no way to tell which year you were looking at.

0.18.0

Mindmaps

Notes can now hold a mindmap: one central idea with branches spreading left and right. It joins flowcharts and org charts as the third kind of diagram. Insert one from the block menu (Mind map), or ask in chat — "turn these points into a mindmap", "organise this into a mindmap".

  • For thinking, not for process. Flowcharts show steps and branching; org charts show hierarchy. A mindmap is for opening a topic up — brainstorming, sorting out what an argument contains, sketching the shape of a piece of writing.
  • The layout is worked out for you, and the same note always draws the same picture. Branches are split left and right automatically, so there is no direction to choose.
  • Drawn as a static image, so it survives in exported .html, in PDFs and in thumbnails.

Markdown round-trips keep more of your note

Switching a note to Markdown and back used to drop things quietly. Five kinds of content now survive the trip.

  • Code block filenames. A filename shown above a code block was written nowhere in the Markdown, so it was gone for good after one round trip. It is now carried in the fence, as ```ts title="a.ts".
  • Image captions became a separate italic paragraph underneath the image. They stay attached to the image.
  • Quote attributions. The author and source were folded into the quote text, where they read as part of the quotation. They stay separate.
  • Single checkboxes turned into a one-item checklist.
  • Diagram types. An org chart came back as a flowchart, every time.

Fixes

Japanese labels ran outside their boxes in flowcharts and org charts. The width of a node was estimated as though every character were a Latin letter, so labels in Japanese, Chinese and Korean overflowed the shape and collided with neighbouring nodes.

Cost estimates for some Gemini models were too low. The price table carried a provisional figure for gemini-3.5-flash that had never been revised against Google's published prices — the estimate came out at between a fifth and half of the real rate. If you picked gemini-flash or gemini-3.5-flash yourself, the estimate you see will now be higher. Nothing about what you are charged has changed; only the estimate was wrong. If you have not changed the model, your estimates were already correct and are unaffected.

0.17.2

Fixes

Gemini stopped working if you had not changed the model. The model monthlet picked by default, gemini-flash-latest, began returning "service unavailable" from Google and kept doing so — three checks spread over more than an hour, every one of them failing. Chat with Gemini did not go through at all unless you had picked a different model yourself.

The default is now Gemini Flash-Lite, which answered normally throughout. Flash-Lite is also listed in the model picker, so you can choose it explicitly, and any model you had already selected is left alone.

  • This was not a fault in monthlet, and not your API key. In the same minute that the default failed, two other Gemini models answered fine with the same key and the same code path — so the problem was confined to that one model name.
  • Cost estimates still work with the new default. They are shown from a price table, and a model missing from it shows no estimate at all.

0.17.1

Chart colors have changed

Charts now use a palette chosen for telling series apart, rather than your theme's brand colors. Existing notes will look different the next time you open one. Only the colors change: your data is not touched and the note files are not rewritten.

  • Why. A theme's colors are picked to work together, not to be told apart. Measured across the built-in themes, only three to five of them were actually distinguishable from one another — while a chart cycles through six series. Some charts could not be read at all, and no reordering could fix that, because the problem was the number of colors, not their order.
  • Charts no longer restyle when you switch themes. That is the trade: readability over following the theme. A theme that wants its own chart colors can define them.
  • Up to seven series are now distinguishable, with separate sets for light and dark screens.

Fixes

Images were missing from imported Markdown. Importing a Markdown file or folder only copied images written in Obsidian's ![[file]] form. Standard ![alt](path) references were left pointing at files that had never been copied, so every image broke — and the import still reported success. Those images are now copied and relinked, including ones inside paragraphs, list items and table cells. When something still cannot be found, the import result now tells you how many references are unresolved.

Switching the default theme did nothing until you reopened the note. Picking a theme in Settings changed the setting but left open notes as they were, so it looked like the click had not worked.

Duplicating a theme in Japanese produced an English name. The copy was named from an internal id plus the word "copy" (corporate copy) instead of the name shown on screen. It now reads the way a duplicated note does.

Series colors were hard to tell apart. The first two colors of a chart came from a pair that a theme uses together, and in the light theme the fifth and sixth had identical brightness.

0.17.0

Three more chart types

Ask the assistant for a chart and you can now get three shapes that were not available before. They use the same data you already give it — labels and one or more series — so nothing about how you ask changes.

  • 100% stacked bar — each bar is normalized to 100%, so you read the mix rather than the total. Use it when the question is "what share of the whole", not "how much".
  • Stacked area — the continuous version of a stacked bar, for how a total and its parts move together over time.
  • Lollipop — a lighter alternative to a bar chart: a thin stem with a dot at the end. It stays readable when you are listing many values side by side.

Charts are drawn as plain SVG inside the note, so they keep working in the saved .html file, in an export, and in any browser. They follow your theme colors, so changing the theme restyles them.

Fixes

Help could not be found when you searched for it by a different name for the same thing. Searching the help for "recycle bin" returned three unrelated topics, and the Japanese equivalent returned nothing at all. Both now find the topic about deleting and restoring notes.

Help quoted another product's settings by name. A passage about cloud storage referred to a setting by the exact label another application uses, which is wrong when you are not using that application. It now describes what the setting does instead of naming it.

The Japanese interface referred to the chat panel by a name the panel does not use. The menu item and the shortcut list called it "チャット", while the panel's own heading reads "Chat". Both now match the heading.

0.16.5

There is no 0.16.4 release — it was prepared but never published. The fixes it contained are included in this version.

Fixes

The note map opened squashed into a corner the first time. After turning the note map on and opening it, the graph could appear small and bunched into one corner and stay there. "Fit to screen" did not help; changing anything else — the view mode, the depth, a tag filter — rebuilt it correctly. It now lays out properly on the first open.

Note map labels were cut off at the edges of the frame. A note sitting near the left or right edge had its name clipped — the beginning or the end of it was missing — and "Fit to screen" did not bring it back. Labels now stay inside the frame.

Links the assistant wrote into a note were stored in an unencoded form. When you asked it to link to a note whose file name contains spaces, the link worked on screen, but the form written into the file was one that other tools reading your notes could not follow. Links are now normalized as they are written, so what is stored matches what you see.

The assistant mentioned internal identifiers when it explained an edit. Its replies could include a block's internal id and English type name — "updating the existing paragraph block (blk_45b6…)" — neither of which appears anywhere in the interface. It now describes what it changed in the words you see on screen.

Removing a tag from a note could not be undone. Clicking the × on a tag chip — or pressing Backspace in an empty tag field — removed it immediately, with no way back: tag changes are not part of a note's history, so neither the history view nor ⌘Z could return it. A notice now appears with "Undo", which puts the tag back as it was.

0.16.3

Fixes

Asking the chat for tag suggestions did not always produce the chips. When you asked for tags on a note you had not just created or edited — "suggest some tags for this note" — the reply sometimes listed tags as plain text instead of offering them as chips above the input. Reading them back and typing them in by hand was the only way to apply them. The suggestions now come back as chips, so a click applies them.

This affected Anthropic models only; OpenAI and Gemini already behaved this way.

0.16.2

Fixes

A link to another note sometimes did not become a link. When you asked the chat to link to another note, and that note's name contained a space, the link stayed in the page as [Note name](Note name.html) and could not be clicked. The note map showed the two notes as connected, so it was only the page itself that disagreed. Links are now made properly.

Notes already in that state are fixed when you reopen them. Nothing in the files changed — the way they are displayed did — so the link appears the next time the note is opened.

0.16.1

Fixes

A path could point outside the vault and not be caught. When the chat asked to open or change a file, a path written in escaped form (%2E%2E%2F…) was treated as an odd file name rather than as an attempt to leave the vault. Those are now read for what they mean and refused. Nothing outside your vault was reachable before this — the file simply did not exist — but the check now happens where it should.

The chat sometimes had to try a file path twice. Paths it had been given in escaped form were rejected on the first attempt. It worked around this on its own, so you would not have noticed anything beyond a slightly slower answer. It now works the first time.

0.16.0

Seeing how your notes connect

Notes have been able to link to each other for a while. What you could not do was step back and look at the whole thing. The note map draws it.

  • The whole vault, or just what is near. Switch between the two at the top. "Nearby" starts from the note you have open and follows links out one to three steps.
  • Colour comes from tags. A note takes the colour of its first tag. Click a tag in the legend to narrow the map to it, and turn off "Show isolated notes" to hide the ones that connect to nothing.
  • Hover a note to read it. The same preview you get from a link in the text.
  • It keeps up while it is open. Save, create, rename or delete a note and the picture changes with it. Where you have panned and zoomed to stays where you left it.
  • Off by default. Turn it on in Settings → General, and it appears at the top of the sidebar.

The chat can work with links too

Looking at a real vault made one thing obvious: notes that should be connected often are not. So the chat now knows about links.

  • Ask which notes nothing points to, which ones sit at the centre, or what is near a particular note.
  • Ask it to add links, and it writes them with paths that work from the note being edited.

Starting from a template

Two structures come with the app: meeting notes (attendees, agenda, decisions, to-dos, next time) and a weekly review (what moved, the numbers, what is stuck, next week).

Ask for one in the chat — "make today's meeting memo with the meeting notes template" — and the structure becomes the base while the content is written for what you asked. They live in the app, so no template files appear in your vault, and they follow your display language.

Fixes

Standard menu items stayed in English. Undo, Cut, Paste, Close Window, About monthlet and their neighbours were English no matter what language you had chosen, so a single menu mixed two languages. They follow your language now, in all six.

0.15.0

Bringing a day's events into a note

You could already ask the chat to put your schedule into a note. Now the calendar offers it, so you do not have to think of asking.

  • Start from the day you are looking at. In the month, week, and day views, each day now offers to import its events. It sits next to the button that opens that day's Daily Note.
  • It fills in the request; you send it. Choosing it writes the request into the chat box and stops there. You can change the date, or widen it to a whole month, before sending.
  • Shown when Daily Note is turned on in Settings → Calendar.

Fixes

The menus were in English on a first run. Before a Vault was chosen, the app was in your language but the menus were not. They now follow your language from the start. The Help menu kept its English title even after that, and now it does not.

Help described a message that does not exist. When only Google Sheets was connected, the help said the card would ask for a reconnect. The card says something else, so there was nothing to look for. The help now quotes what the card actually says, and adds that the button reads Connect — you do not have to disconnect first.

Help named the Google connector by its old name. The card was renamed when Calendar was added, and the help was still sending you to the old name in every language.

One thing had three names. The same folder was called Vault in one place and a folder in another, so it was not clear they were the same thing. It is Vault throughout now.

Asking for help in your own words. Some sections could not be reached by the phrasing people actually use, such as asking to search notes rather than naming the feature. Those sections are reachable now.

Two help sections were missing in French. Search, and import and export, had no entry at all, so questions about them could not be answered.

The token for external agents was shown as dots. Settings showed the token masked, and that masked text could end up in an agent's configuration — it looks like a token, so nothing seemed wrong until the agent tried to connect. The token is now shown as it is. A connection refused because of the token also says how the token was wrong, instead of only that it was rejected.

0.14.0

Google Calendar

monthlet connects to Google Calendar. Ask the chat what is on your schedule and it reads the calendar directly, and ask it to put something on the calendar and it creates the event for you.

  • Your day, in the note you are already writing. Bring today's events into your daily note instead of copying them across by hand.
  • Creating events from the chat. Describe the appointment in words and it is added to the calendar you choose.
  • You decide what is connected. Connect and disconnect in Settings → Connectors. Calendar data goes to the AI provider you have set up, and nowhere else.

Fixes

Choosing which Google account to connect. When you were signed in to several Google accounts, authorization picked one without asking. It now asks you which account to use.

Stopping partway through authorization. Closing the Google window before finishing left the connector in a state where trying again did nothing. You can start over now.

Telling apart the reasons a connector is refused. "Access denied" was all you saw, whether a permission was missing or the service had never been turned on for the account. The message now names the cause, and monthlet checks the calendar once right after you connect, so a setup problem shows up then rather than on your first real request.

Working locations are no longer listed as appointments. Entries that only record where you are working were appearing among real events in today's schedule.

Writing to a note that is not open. When the assistant edited a note you did not have open, nothing on screen led you to it. There is now a way to open it.

Answers about how to use monthlet. A long help section could take up the whole answer and push out the section that actually fit the question. Several sections now come back together, so the right one is not crowded out.

Setting up for the first time. "Skip" ended the whole setup rather than the step in front of you, and there was no way to open it again — so the sample notes were lost for good. The button now says what it does, asks before closing, and setup can be run again from Settings → General.

What the first setup step asks you. The first and third steps were both called "API key setup", which read as being asked the same thing twice. The first one only asks how you want to use AI, so that is what it says now. The card that offered your own key was headed with the abbreviation on its own; it now says what it means first.

The notes you start with. The three sample notes created at the end of setup are about ordinary things you can adapt to your own use, rather than about building monthlet.

0.13.3

Connecting an external agent

Connecting monthlet to an agent like Claude Code no longer puts a token into the agent's configuration file. The command you copy from Settings → Connectors → Publish to external agents now registers only the path to a command that ships with monthlet, and the token is read from monthlet each time the agent connects.

  • Regenerating the token no longer means re-registering. The agent has nothing stored to go stale, so it reconnects on its own.
  • Running this command requires Node.js. For agents that cannot start a command, Direct HTTP (with token) is still available and works the way it did before.

Editing a note you do not have open

Asking the assistant to add a paragraph to a note that is not currently open would sometimes work and sometimes fail on the same wording — and rephrasing it as "at the top" was often the only way through. The assistant now sees the identifiers it needs when it reads a note, and adding to the end of a note no longer needs one at all.

0.13.2

Fixes

Gallery thumbnails. A card that never came into view could stay a plain placeholder for the rest of the session. Reopening the tab did not help, and the picture came back only after restarting the app. A card now asks for its thumbnail again when the image fails to load, so it recovers on its own.

Approving an action after a pause. If you left an approval dialog open for more than about a minute and a half, the chat request failed with a timeout — even though the action you approved had already run, which meant resending could run it a second time. The time you spend deciding no longer counts toward the response. If a request does time out after a tool has run, the message now says the action may already have taken effect.

Update check. When a check fails, the reason is shown under the message, so a problem with the update feed and a problem with the connection are no longer indistinguishable.

0.13.1

monthlet can act as an MCP server

Agents outside the app — Claude Code, for example — can now work with the notes in your vault through monthlet itself, instead of editing the .html files behind its back. Every write goes through the app, so the note history, the search index, and the tab you have open stay in step with what an agent does.

  • Turn it on in Settings → Connectors → Publish to external agents. It is off by default. Copy the setup command shown there and run it in a terminal to register monthlet with Claude Code.
  • Reading: search and list notes, read a note as Markdown, read spreadsheet cells, and read the numbers behind a chart.
  • Writing is a separate switch (Allow writing, also off by default): create a note from Markdown, replace the body of a note, create a folder, create a spreadsheet. Deleting, moving, renaming, and editing cells in an existing spreadsheet are not offered.
  • Two guards on writes: a note that is open with unsaved changes is not written, and neither is a note that has changed since the agent read it. The previous version is kept in the note's change history either way.
  • Elements that Markdown cannot express — charts, embeds, calculation blocks — travel as placeholders with an id. Leave the line in place and the element survives; anything removed is reported back rather than dropped in silence.

Agents connect only while the app is running, only from the same machine (127.0.0.1), and only with the token shown on that screen. The vault they see is the one you have open. The full tool list, arguments, and guarantees are at monthlet.ai/docs/mcp.

Version history

An external write to a note you had open recorded the same pre-write version twice. It now records once.

0.12.6

Gallery thumbnails

Some cards in the gallery could keep showing a placeholder instead of their thumbnail, and stay that way until the app was restarted. This release fixes that.

  • The cause: thumbnails looked up a note's location through the search index. A request that arrived while the index was being rebuilt — right after launch, or when switching vaults — found nothing and was dropped, and the card never asked again.
  • The fix: thumbnail generation now waits for the index to settle, and falls back to the same lookup the gallery itself uses.
  • Also faster: a redundant step that could spend up to two seconds per thumbnail was removed. Thumbnails are fixed to the light appearance as before, which the stylesheet already handles on its own.

0.12.5

Menu items, "Check for updates", and gallery thumbnails work again

Three things in this release were quietly broken: clicking anything in the app menu did nothing, "Check for updates" appeared to do nothing, and gallery cards never got their thumbnails. They turned out to be one chain of causes, so they are fixed together.

  • App menu items respond again. Settings…, New note, Search, Save, Export and the rest did nothing when clicked from the menu bar. Keyboard shortcuts kept working, which is why this went unnoticed. Messages from the app to its window were being delivered to an invisible helper window instead of the one you see.
  • "Check for updates" shows its result immediately. The check itself was running, but the result never reached the settings panel — you only saw it after closing and reopening the panel. It now updates in place, whether an update is available or not.
  • Gallery thumbnails are generated again. Thumbnail rendering could stall forever on one note and take the whole queue with it, leaving no thumbnails at all and an invisible window running in the background. Rendering now gives up on a stuck note and moves to the next one.

Known limitation: thumbnails are supposed to always render in light mode. That fixing step is currently inactive, so on a system set to dark mode, thumbnails render dark. This will be addressed separately.

0.12.4

Connector actions now always ask before they run

This release fixes three things around custom MCP servers, all of them about the moment an action is about to run.

  • Auto-approving vault operations no longer covers connector actions. If you had turned on "Auto-approve vault operations from Chat", a custom MCP server could write outside your vault without asking. That setting is about operations inside your vault, so it no longer applies to connectors — an MCP action that writes, sends, or deletes now asks every time, the same way fetching an external URL always does.
  • A connector action no longer reads "Done" before it has run. The step in the chat said the action was finished while the confirmation dialog was still open, and it stayed that way even if you cancelled. It now stays "Running" until the action actually returns.
  • The ID field explains the rule it enforces. Custom MCP IDs accept lowercase letters, digits, - and _, starting with a letter or digit — the hint and the error message said "letters and digits", which left uppercase input rejected with no reason given.

0.12.3

Fixes to the approval dialog for connector actions

This release corrects the wording of the dialog that asks before a connector action runs. Both issues showed up with custom MCP servers, which are the first connectors to use the approval gate.

  • The heading no longer calls every action a vault operation. A custom MCP server can act outside your vault — writing to a folder you allowed, for example — so the dialog now asks about "this operation" instead.
  • The English interface no longer shows Japanese in the details. The heading was translated but the line describing what would run was not, so an English UI showed a mixed dialog.

Nothing about what gets approved has changed. Read-only actions still run without asking, and actions that cannot be undone still ask first.

0.12.2

New

  • Connect Google Sheets and ask the chat about a spreadsheet — open Settings → Connectors and connect a Google account. Give the chat a spreadsheet URL or ID and it can look at the sheet structure and read a range to answer questions about it. The connection is optional, off until you set it up, and read-only: monthlet never creates, edits or deletes anything in your Google account. Disconnecting revokes the authorisation and deletes the stored credentials from your device.
  • Import a Google Sheet as a spreadsheet document — open a spreadsheet document, then "⋯" → Import → Import from Google Sheets. Paste the URL and monthlet lists the tabs of that file so you can choose which ones to bring in. You can create a new document or insert the sheets into the one you have open. The values are copied to your disk once; the document does not stay in sync with Google afterwards.
  • Connect your own MCP servers — Settings → Connectors → Add custom MCP registers a server you run yourself (stdio command or HTTP URL), and its tools become available to the chat. Tools can be switched on and off individually, and remote servers that require signing in are supported. Actions that write, send or delete ask for confirmation before running.

Fixes

  • Importing a table larger than the displayed range now tells you — the grid shows up to 50,000 rows × 1,000 columns per sheet. Data beyond that was kept in the file but never drawn, with nothing on screen to say so. Opening such a document now shows the actual size of the data and the displayed range. The values were never lost: they are in the file and come back out when you export to Excel or CSV.

Note

The Google connection is currently under review by Google. Until that finishes, the consent screen shows a warning that the app has not been verified. Nothing about what monthlet reads changes when the review completes.

0.12.1

Fixes

  • The report window now opens as a dialog in the middle of the window — "Report what didn’t work" used to open inside the chat panel, so the fields were only a few lines tall and the note about what gets sent was cut off. What is sent has not changed; it is simply readable now. The same fix applies to the confirmation shown before sending a large request.
  • Cost estimates now appear for the default Gemini model — the estimate shown before sending a large request had no price registered for Gemini Flash (latest), so anyone using Gemini with the default model saw a token count without an approximate cost. Prices are approximate and are still omitted when a model's price is unknown.

0.12.0

Report a problem with an AI response

When a response in the chat was not what you expected, you can now send that exchange to the developer to help improve monthlet.

  • You decide what is sent — pressing "Report what didn’t work" under a response opens a preview of the exact content: your message, the AI response, the tool calls, the model name, and the app version. You can edit or remove anything before sending.
  • Nothing is sent automatically — a report leaves your device only when you press Send. The button itself can be hidden under Settings → AI.
  • Your vault path is masked — the folder path of your vault is replaced with <vault> before sending. After sending you get a report ID; contact [email protected] with that ID to have the report deleted. Reports are kept for at most 12 months.

The license agreement (§3, Data Storage and Privacy) was updated for this feature, so the app shows the agreement once more on next launch. Nothing else about data handling has changed: notes stay on your device, and nothing is sent unless you send it. Details: https://monthlet.ai/privacy

0.11.3

Skills now follow your vault

The list of custom skills (the / commands in chat) was only read when the app started. Two cases where this got in the way are fixed:

  • Skills arriving via cloud sync — if you keep your vault in a synced folder and use it on a second Mac, a skill created on one machine now appears on the other as soon as the window regains focus. Previously it did not show up until the app was restarted.
  • Switching vaults — the / list now switches to the new vault's skills immediately. Previously the previous vault's skills could remain in the list.

Skills live in your vault (.monthlet/skills/) as plain files, same as before — nothing about where your data lives has changed.

0.11.2

Fixes

  • When a note in a vault on cloud storage has not been downloaded yet and cannot be opened (for example while offline), the app now says the note is not downloaded yet, instead of suggesting the file may be corrupted.
  • When a save conflict is resolved with "Load changes", the edits discarded from the tab are now kept in the note's version history. Whichever option you choose, the discarded side can be restored later.

0.11.1

Fixes

  • Fixed an issue where opening a note in a vault on cloud storage (iCloud Drive, etc.) could start downloading the entire vault in the background. Backlink calculation no longer reads files that have not been downloaded yet; backlinks from those notes appear once the files are downloaded.

0.11.0

Vaults on cloud storage

Vaults kept on cloud storage (iCloud Drive and similar) now work properly on a machine where the files haven't been downloaded yet.

  • The sidebar no longer waits for downloads. Previously, opening such a vault silently downloaded every note before showing anything — the sidebar stayed empty with no error. Now folders and notes appear immediately.
  • Notes not yet downloaded are listed with a cloud icon, titled by their file name. Opening one downloads just that note, and it becomes a regular note.
  • Folders that can't be read (for example due to permissions) now say so in the sidebar instead of appearing empty.
  • Search keeps working from the start: the synced search index is reused instead of rebuilding it by downloading everything.

Faster sidebar for large vaults

The folder tree now appears in two steps: the structure shows up first, then note titles and pin/archive states fill in moments later. Reading notes was also parallelized. On a vault with 1,700+ notes, the first paint dropped from waiting on a full scan to roughly the time of a directory listing.

Fixes

  • The search index was being built twice on every launch, which could corrupt in-memory search state. It now builds once.

0.10.0

Note history

Notes and spreadsheets now keep their earlier states, and you can go back to any of them. Unlike undo, history survives a restart.

  • Open it from the note menu (the … in the toolbar) → Version history…. Dates on the left, a preview of that version on the right.
  • What gets recorded: edits are coalesced into one entry every 5 minutes by default. On top of that, a version is always recorded before the AI rewrites the note, before a note changed outside the app is reloaded, and before you restore an earlier version — regardless of the interval. The list shows which kind each entry is.
  • Restoring keeps the current content in history too, so you can undo the restore.
  • Deleting: remove single entries with ×, or clear a note's history at once. Deleting a note deletes its history with it.
  • Settings → Vault: turn history off, change the interval (1–60 min), and set the maximum entries per note (default 100, up to 1000). Oldest entries are dropped past the maximum.

History is stored inside your vault as compressed copies of the note itself. It never leaves your disk.

0.9.1

A maintenance release. Most of it is keeping BYOK working as the providers move underneath it.

  • Gemini works again. The models the app defaulted to were retired by Google, and Gemini 3 started requiring a signature field the app wasn't sending back — both produced hard errors on every request. Fixed, and Gemini 3 no longer loops over the same edit several times before settling.
  • OpenAI gpt-5.6 works. The newer models reject the parameters the app was sending; requests failed with a 400 instead of returning a note.
  • Help text no longer assumes macOS. Wording that named macOS-only concepts has been made OS-neutral, in all six languages.
  • Smaller download. Development-only files were being packaged into the distributed build; they are excluded now.

There is also a provider contract smoke test that runs all three providers before every release, so this class of breakage gets caught before it ships rather than by you.