Changelog

What’s new in Sawit, release by release.

v0.0.8

LatestRelease ↗

Features

  • clisawit list keys prints every shortcut while Sawit runs
  • mcpkeymap_list, keymap_bind and keymap_unbind read and change your key bindings
  • mcpterminal_split splits a terminal pane and can run a command in the new half
  • clisawit list config and sawit list mcp, and list_config_files for agents
  • toolsuninstall dev tools from the terminal (sawit cabut) and from agents (uninstall_dev_tools)
  • mcpcanvas tools take a file, to work on a design file or any canvas file in its own tab or on disk
  • clidaftar and stop are list and bakar's other names, and sawit --help lists every alias and flag
  • clisawit browse opens a page, a port or the project's dev server in Sawit's browser
  • clisawit nyalakan starts stopped Sawit instances, and --ulang restarts them
  • mcpevery tool tells clients whether it only reads, can destroy, or reaches past this mac
  • catalogthe Dev Tools and MCP pages work from the keyboard
  • terminalquitting, closing a window and restart to update ask while a terminal runs something
  • appsearchable catalog for dev tools and mcp servers; config files for every coding agent
  • canvasreplace the excalidraw webview with the native figcraft canvas
  • canvasexports never overwrite a canvas file; headless exports find system fonts
  • canvasexport_svg and export_png ops on the native canvas
  • mcpbrowser_inspect, browser_design and browser_export_design
  • designassets, system tokens and export in the design panel
  • designinspect, colors and fonts in the design panel
  • designscan, inspect and background export in the browser tab
  • designasset naming, data URLs and capped downloads
  • designinspect details, contrast, CSS and Tailwind output
  • designDESIGN.md, DTCG, Tailwind and shadcn exports
  • mcpbrowser_annotations reads the user's visual feedback
  • annotatesend annotations to the terminal running Claude
  • annotateannotate panel with screenshots and markers
  • annotateelement details, key styles and source hints on pick
  • browserbrowser_resize, viewport in app_state, ports open in the browser
  • canvasimport, save as, export and copy as from the canvas menus
  • browsertoolbar toggles, side panel, ⌘⇧. and clean screenshots
  • browserdevice sizes with page zoom
  • canvaslayers panel with pages, selection, rename, visibility, lock and drag
  • keymapkeymap editor; every feature's shortcuts can be rebound
  • canvasfills, strokes, effects, typography and export in the design panel
  • canvasmain menu, context menu, actions palette and shortcuts sheet
  • canvasdesign panel with position, appearance and auto layout
  • terminalsplit panes replace herdr; Sawit no longer offers or installs it
  • terminalrun, ssh and agent tools address panes
  • canvasdraw the arc and corner radius handles the move tool answers
  • terminalzoom panes and close exited shells in splits
  • terminalherdr-style pane menu, rename and close pane
  • terminalsplit panes with headers and draggable dividers
  • canvasfloating toolbar, top bar and context bar on the native canvas
  • terminalread a session's working folder
  • canvasopen .figcraft and .excalidraw files in canvas tabs
  • canvastype and compose text on the native canvas
  • canvascopy and paste between canvases and from other apps
  • mcpcanvas_command and canvas_commands, and canvas tools that work on .figcraft files
  • canvasimport excalidraw boards and migrate the project canvas on first open
  • canvasdraw the view menu's outlines, soft proof and pixel preview
  • canvasfigcraft shortcuts on the native canvas, sharing keys with sawit by policy
  • canvasturn mermaid into editable board shapes without a browser
  • canvaspointer tools and cursors on the native canvas
  • canvasget, add, update, delete, clear, replace and commands ops on the native canvas
  • canvasselection, handles, guides and labels drawn over the native canvas
  • canvasnative canvas view with pan, zoom, dot grid and autosave
  • canvasapply element skeletons as board shapes, connectors, text and sections
  • canvasopen and autosave .nyawit/canvas.figcraft with a backup before emptying
  • shell-configsave your shell startup files to a private github repository, warning about secrets
  • mcpremove a server from every client at once and stop a hanging install
  • toolsuninstall dev tools and stop an install that hangs
  • nyawitkeep a project's canvas, diagrams and exports in its .nyawit folder
  • updatecheck hourly and install a downloaded update when sawit quits
  • toolsupgrade dev tools from the terminal (sawit pupuk) and MCP (upgrade_dev_tools)
  • mcpbrowser_* tools drive the browser tab
  • browserbrowser tab with toolbar, per-project storage and agent ops
  • toolsdetect newer versions and upgrade installed dev tools

Fixes

  • dbwriting DATABASE_URL leaves a .env that Sawit can't read as it is, instead of replacing the whole file
  • mcpa canvas tool that names a file refuses to run when the Sawit app running is too old to know it
  • mcpbrowser_annotations names the key your keymap gives Annotate
  • mcpan agent's new terminal tab starts in the agent's own project, not the one in front
  • mcpterminal_close asks for confirm before it ends a program or the terminal you type in
  • mcpremoving a host, prompt, connection or saved command, stopping processes and replacing DATABASE_URL need a confirmation
  • mcpstart_instance says whether a held start can still be started anyway
  • toolsthe Tools page no longer offers to uninstall Homebrew's npm, which would remove Node.js
  • mcpa client config that doesn't parse is reported by line and column, never by quoting its line
  • mcpwith no project named, an agent's canvas tools use the canvas of the project it works in
  • clisawit asks before running a statement that writes
  • mcpcanvas_get, canvas_clear and canvas_export say they act on the page on show
  • mcpbrowser_export_design asks for replace: true before it replaces an earlier export
  • canvaswhat an agent deletes from the canvas is kept in a .bak first, with Sawit open or closed
  • browserbrowser_network shows agents a page's passwords and tokens as [redacted]
  • mcpthe browser tools tell agents that ⇧⌘. opens Annotate and what clearing the console or network log drops
  • editorkept changes for a file that can't be edited say where they are
  • editorSave in the close or quit question saves a read-only tab
  • keymapkeymap.json is saved as Sawit saves every file, keeping its permissions
  • canvasthe note of a canvas file saved again says to delete it again
  • workspacea project opened through a symlink opens at the folder it leads to
  • toolsclosing the window or quitting while Dev Tools installs asks first, and stops the installer
  • browseran agent's browser is its own project's, not the one you're looking at
  • browserthe link question says what cancel does, and reload lets the page's links ask again
  • keymapthe keymap editor an agent opens leaves the keyboard where you have it
  • browsersend to terminal goes to the page's project and never into an SSH session
  • configsaving shell files with a sign-in GitHub refuses asks for a new sign-in, not a sign-out
  • installin Sawit's own terminal, the install command leaves Sawit running and says where to run it
  • mcpa claude or codex CLI outside nvm's folders finds nvm's node, so installs through it work
  • mcpupdating a server moves the PATH Sawit wrote with npx, so it still starts after nvm moves on
  • runstop while a restart waits for the old run calls the restart off
  • mcpapp_activate_tab shows another project's tab with its project, as a click does
  • mcpapp_close_tab says when it asked the user first, instead of "closed"
  • mcponly Claude Desktop and LM Studio entries pin where node is; editors keep your shell's PATH
  • filesopen project folder replaces the folder of the project that asked
  • toolsretry after a failed uninstall asks to run that uninstall again, never the installer
  • files⌘Z pressed during a change that fails no longer undoes the change before it
  • mcpgit_switch, git_unstage and browser_navigate say they can replace what was there
  • terminalan agent's command never goes into the shell you're typing in
  • uithe status bar's project path is a Copy Path button, the full path in its tooltip
  • editorchanges a quit kept come back with a warning when the file changed on disk in the meantime
  • filesthe name box lines up with the tree's outlined rows
  • editora quit that can't ask keeps unsaved changes, and the next launch brings them back
  • editorquitting, Restart to Update and closing a window ask to save unsaved files first
  • filesimage, pdf, video and find in folder tabs follow a renamed or moved file
  • filesthe files tab's open project folder goes through the workspace's checks
  • filesthe files tab's git items follow the project's repository as it changes
  • filesexpand all leaves linked folders closed, and the refresh reads open folders in one go
  • filesa file opened from the files tab takes the keyboard, and the tree shows when it has it
  • mcpthe MCP page says what the built-in Sawit server lets agents do
  • githuba saved sign-in GitHub no longer accepts asks you to sign in again, and git stops sending it
  • canvason a design file, board shapes and diagrams say what the canvas is instead of pointing at a hidden menu
  • terminala new or switched-to terminal tab scrolls into view in the tab strip
  • workspacea tab you open or switch to scrolls into view, not the one left of it
  • workspacethe keyboard never stays on what is hidden
  • files⌫ asks before moving a file or folder to the trash, and ⌘⌫ doesn't
  • installthe install script points at Install CLI in the status bar, where it is
  • fileswhile a name is typed in the tree, its other shortcuts leave it alone
  • installthe install script waits for Sawit to quit before replacing it, and runs only once whole
  • filesa paste or name that fails keeps the cut and the name typed, and an opened folder is read again
  • filesthe tree's keys act only on an entry whose row is shown
  • fileswork that lands after the files tab changes folder leaves the new folder alone
  • filesfile changes run one at a time, so ⌘Z undoes the change it follows
  • filesredo of a trash moves the file to the trash again instead of taking its tabs along
  • mcpagents are told what a closed app keeps, that browser_* need the app, and what shell_config is
  • mcpbrowser_navigate with no url opens the agent's project's dev server
  • mcpbrowser_wait_for answers at once what waiting won't change
  • mcpcanvas_command reads the files an engine command names as the agent means them
  • mcpcanvas_export writes only an absolute path, and takes PNG in any case
  • mcpcanvas_load, write_env and browser_screenshot read paths as every other tool does
  • canvascanvas_load brings back the board a clear kept in canvas.figcraft.bak
  • mcplaunch_app opens the path it names, after --, and says what it opened
  • mcpterminal_run starts its shell in the folder it names, or runs nothing
  • mcpa project named through a link, in another case or with .. is the open one
  • mcptwo agents editing one canvas while sawit is closed get true answers and lose no edit
  • searchfind in folder shows the latest search's hits and stops reading at its limit
  • filesadd to .gitignore and .git/info/exclude work in worktrees, on links and odd names
  • filesduplicating or pasting a folder that holds a pipe or socket finishes, leaving them out
  • filesa rename to another file's name in other case no longer replaces that file
  • workspacewhat is shown again has its keyboard back
  • cataloga page an agent opens leaves the keyboard where the user has it
  • canvasan agent's load or command that names a pipe or a link to a device is refused at once
  • mcpa detection that finishes under an open sign-in sheet no longer takes the app down
  • toolsZed or Cap from a Homebrew cask isn't offered their installer's removal
  • catalogpaths under a home folder of a similar name aren't shortened, and the MCP search finds tags
  • uithe status bar's Git button shows ⌘3 in its tooltip, as the other buttons there do
  • configConfig Files lists each agent profile as its own group, and only real profiles
  • canvasa panic in opening a file or in an agent's op is an error, not an abort of the app
  • canvasa Mermaid diagram stopped for taking too long isn't rendered a second time
  • canvasa blank file another app made keeps its page colour in the dark theme
  • canvasa save records the page on show, so a file opens on it again
  • canvasan agent's op waits while the user draws a path with the pen, instead of joining its undo step
  • canvasa batch step can't write over the canvas file through a path taken from another step
  • configdeleting a config file for good names it by its path
  • configsaving shell files to GitHub warns about secrets on every save, and finds more of them
  • browserbrowser_evaluate no longer leaves a false SyntaxError on the page
  • browserpage scripts can no longer borrow the agent's functions to annotate
  • toolsclosing the Dev Tools tab mid-install asks and stops the installer, and one tool installs at a time
  • mcpa failed or stopped change shows on the server's row, naming the client
  • mcpan install's result lands on its own client when Detect Again reorders the list
  • mcpremote servers aren't written into Claude Desktop and other program-only clients without npx
  • workspaceshortcuts keep working once the web page, tab or panel you typed in is hidden
  • mcpAWS installed in another Region reads as installed there, and the Region is checked
  • mcpthe MCP page finds claude, codex and npx where the Dev Tools page does
  • toolsuninstall runs a tool's own removal only on the copy its installer put in place
  • toolsan installer that prints a line that isn't UTF-8 keeps its output and its pipe
  • toolsdev tools work when the login shell is fish, nu, PowerShell or tcsh, and a failed detection says so
  • mcptwo changes to one client config at once no longer lose an entry or break the file
  • mcpremoving a server keeps the others in order, and config files keep their indentation
  • mcpan update keeps what you added to a server's entry, and Remove from N asks first
  • canvasclosing or quitting a canvas it couldn't save keeps its edits in a copy
  • canvasopening a canvas file that is a pipe or a link to a device is refused at once
  • canvasa canvas that found no file refuses to save over one made there since
  • canvasa clear or a load keeps the five boards before it, not only the last
  • canvasan agent's cut or paste while the user types ends the typing first, so the next click keeps it
  • filessaves, canvas backups and exports never write through a link a cloned repository holds
  • designexports of a dev site on a .test, ddev or lvh.me name keep its assets
  • browsera page can no longer open annotate and add an annotation of its own
  • browseran agent's click in a web page leaves your keyboard where it is
  • keymapthe editor saves a binding for an action that had none
  • mcpagents name the terminal they type into, and app_run_script says where it runs
  • terminalthe quit and restart question comes forward with its window
  • browserAnnotate's key in a web page is the keymap's, not a fixed ⇧⌘.
  • browser⌘C, ⌘V, ⌘X and ⌘A act in the web page, not in the field or panel used before it
  • canvasan agent's key on the canvas does what the keyboard does with the default keys
  • canvasthe canvas's tooltips, menus, palette and shortcuts sheet show the keys as you bound them
  • keymapdefault shortcuts follow keyboard layouts that type keys elsewhere, as macOS menus do
  • keymapa chord you add no longer delays the canvas's ⌘K, and the editor warns of chords on bound keys
  • gitthe commit and comment boxes say ⌘↩ again
  • keymapConfig Files' shortcuts go by its name in the keymap editor and keymap.json
  • workspacethe title bar's Keymap Editor, Tools and MCP buttons bring the tab area back
  • keymap⌘E no longer opens keymap.json from everywhere
  • keymap⎋ and ↩ end key recording, and a hidden recorder lets go of the keyboard
  • keymapthe keymap editor never writes over a keymap.json changed outside it
  • keymapa default turned off with null in keymap.json shows as removed
  • keymapa canvas key can be pointed at another command in the keymap editor
  • keymapthe keymap editor no longer deletes your other binding of the same keys
  • keymapediting a binding records the new keys instead of adding them to the old ones
  • mcpapp and terminal tools go to the window with the agent's project open
  • ssha server's forwarded ports are let go seconds after its last session
  • sshreconnect uses the server's settings as they are now
  • runrestart waits for the old run to stop, however long that takes
  • terminalagents' terminal commands leave your keyboard alone and say where they ran
  • clisawit --wait on a canvas file waits while its canvas is open
  • canvasone canvas per file holds for a path named through a link
  • canvasa canvas file's tab follows its file, and says when it saves a file that went
  • canvasthe canvas you go to takes the keyboard
  • canvasa drag cut off by hiding the canvas's tab ends there, and agents' edits go through again
  • canvasa template, a table or an auto layout added while text is typed ends the typing first
  • canvas⇧Space and ⌥⌘↩ no longer ask for a prototype player the canvas doesn't have
  • canvasa name typed in the layers panel stays when the next click lands on a layer
  • annotatesend to terminal prefers the agent's terminal to an idle shell
  • designan export never writes through a symbolic link in the project
  • designexports of two dev servers on one host no longer wipe each other
  • annotateclosing the browser or clearing no longer drops unsent notes without asking
  • browseran agent's read-only browser call no longer opens a browser over your tab
  • browsereach project gets its own browser tab, cookies, screenshots and exports
  • portsclicking a port opens it in the browser even when the browser is open
  • designexports no longer save what is on your mac or network for a web page, nor send your curlrc
  • designsize caps on stylesheet fetches and asset downloads hold for gzip answers
  • browserbrowser_evaluate works on pages whose CSP forbids eval
  • annotatepage text can no longer add fake annotations to the notes sent to an agent
  • browserpage scripts can no longer forge annotations or read the agent's token
  • browserwindow.open no longer replaces the page with a blank, a search or a local file
  • browserpages can no longer launch other apps without asking
  • browseran address webkit can't read is searched instead of crashing sawit
  • mcpterminal_run answers whatever wait_secs it gets
  • runrunning a script again runs it in its own folder
  • terminaldropping files on a pane makes it the tab's focused pane
  • terminala shell an agent typed into is kept when the first project opens
  • terminalcommands sent to the terminal never land in a run panel script's shell
  • terminala tab's menu and buttons act on that tab after the strip changes
  • terminala tab's × closes only that tab and hands on the keyboard it had
  • terminalclosing a tab left of the active one keeps you in your tab
  • pagesevery page follows the window's width
  • files⌫ after a folder change no longer trashes the previous folder's selection
  • keymapthe editor no longer offers canvas commands the canvas has no use for
  • mcpthe instructions say terminal tools address panes, not only tabs
  • mcpcanvas_export writes a ~/ path in the home folder, not in a folder named ~
  • files⌫ with nothing selected no longer moves the project folder to the trash
  • terminalcommands sent to the terminal go to a shell at its prompt, never into a running program
  • files⌫ while typing a name no longer trashes the selected entry or the project folder
  • browser⇧⌘. toggles annotate when sawit has the keyboard, not only the page
  • keymapshifted symbols read as the keys pressed, ⇧⌘. rather than ⌘>
  • keymapshortcut hints follow rebinds
  • apptyping a search in config files no longer opens or trashes the selected file
  • mcpno tool writes over a canvas file
  • terminalsend to terminal pastes into the tab's focused pane
  • mcpapp_open_page offers the keymap page
  • canvasan agent's edit waits for the user's drag to end
  • canvasagent ops and the layers panel end typing through one path
  • mcpthe offline canvas saver refuses what would lose data
  • canvasa migrated arrow into a wide diamond joins it again
  • canvasmigrated loops and sequence messages stay as excalidraw drew them
  • canvasend the text being typed before a right-click or a menu command
  • canvasdesign panel edits leave the canvas's open gestures alone
  • canvasremoving a paint or an effect keeps the bindings after it
  • designsheet fetch rejects userinfo and checks the address unless the page is local
  • designlocal files are copied only for a page that is a file by the tab's URL
  • designskipped videos aren't failed downloads; chosen videos are saved
  • browser⌘⇧. no longer matches ⌘⇧< on non-US layouts
  • designinspect picking only on the Inspect segment
  • browsera shot gives up after 10 s per step; a pick adds its row without one
  • designfetched sheets reach the page only as CSS, and local hosts only for their own page
  • designforeground is the most-used text color readable on the background
  • mcpa failed design export is reported as a tool error, with the failures first
  • designReveal in Finder runs off the UI thread and reports failure
  • designsaves report failures; reveal errors show; export line follows the host
  • designhover, pin and HTML copy no longer overtake each other; save notes
  • designscreenshot the scanned page before downloads; page answers time out
  • designread oklch/lab/p3 colors, measure used fonts, cap the scan in bytes
  • designrestrict asset URLs to http(s), end curl options, reuse base64_decode
  • designpalette roles from opaque colors; muted skips the body colors
  • annotatea failed paste copies the annotations instead
  • annotateshots take turns so the overlay is never in a capture
  • annotateclip picked text in the page; component-only source hints render
  • browserclicks in the panel no longer take focus from its fields
  • browserthe view keeps the keyboard so ⌘⇧. works from Sawit
  • browseroverlay picks the walked-to parent, stays lazy and never takes pointer events
  • canvasend a colour pick before other input joins its undo step
  • canvaskeep the context bar inside a narrow canvas and scroll its controls
  • mcponly terminal_close's pane defaults to the whole tab
  • terminalidle splits stay idle; panes keep the keyboard and their names
  • canvaskeep the toolbar inside a narrow canvas and scroll its buttons
  • canvaskeep the context bar over the toolbar
  • canvascentre a pasted image or svg in the view
  • canvasselect the line on a triple click while typing, as figcraft does
  • canvasfinish the pen's path on delete and resize with cmd and an arrow
  • terminalan exited pane closing keeps the keyboard where it is
  • terminaltrue 20x4 pane minimum, nested drag limits, live header folder
  • canvaswiden the context bar's text-size menu to fit "Mixed"
  • canvasshow the caret at the start of a line and in a new sticky
  • canvassave canvas files atomically and never over changes made on disk
  • canvascut points, not the layer, with cmd-x in vector edit mode
  • canvasimport arrowheads and open an empty old canvas blank
  • canvaspaint only a frame of the page and document on show
  • canvaskeep a lossy open's original apart from the emptying backup
  • canvasput back the file's versions and branches when a command op fails
  • canvasdraw mermaid loops along their route and keep messages off notes
  • canvascut frame names to their frames and guard the overlay build
  • canvaskeep command ops from opening or switching documents
  • canvasleave select.area off the shortcut sheet
  • canvaskeep an auto gap when a grid cell aligns a frame
  • canvasrefuse layer drops that leave the layers where they are
  • canvasroute canvas keys as figcraft's own keyboard does
  • terminaltab, shift-tab and cmd-c reach the shell and TUIs instead of the window
  • portslabel deno tasks as deno task dev, not go-task's task dev
  • browserreject unknown key modifiers, tidy empty snapshot containers and the blank-page log line

Performance

  • canvasread the system's fonts when a canvas first opens, not at every launch
  • mcpthe MCP page reads each client config once per detection, off the async workers
  • canvasa hidden canvas tab lets go of its render buffers

Features

  • mcprun sql, start or stop an instance and diagnose the network in the running app

Other

  • update README, screenshots and demo for v0.0.6 screens: git, canvas, dev tools, mcp and exports

Features

  • clisawit panen, backup, tanam, list tools and pasang
  • mcptools for exports, backups, csv import, drop and truncate, dev tools and mcp servers
  • quieter project labels in front of tab groups
  • shell config menu to reveal, duplicate, trash or delete a file
  • mcp page installs aws, cloudflare, neon, figma and other servers, with sign-in
  • dev tools page to install claude code, bun, uv and more in one click
  • dbexport to csv or excel, pg_dump backups, csv import, drop, truncate and bulk row edits

Fixes

  • diagramswrap zoomed-out table names at underscores

Performance

  • turn mermaid into canvas shapes with pele and ship only the english canvas

Other

  • update README, screenshots and demo for exports, backups, dev tools, mcp catalog and new cli words
  • add the /consolidate command
  • format with rustfmt and fix clippy's octal-escape lint in tests
  • remove the unused logo, probe example and old planning docs

Fixes

  • retry hdiutil when building the DMG in CI

Performance

  • shrink the app from 44 MB to 33 MB

Features

  • welcome screen, schema diagrams, ports & network, git, SSH and psql-style CLI

Features

  • rebrand PG Desk to Sawit (sawit.dev)

Fixes

  • releases come from bahrulbangsawan/sawit.dev

Other

  • rebuild any release tag by hand (workflow_dispatch)

Features

  • sawit CLI, in-app updates and per-push releases
  • prompt manager — save, search, fill and copy prompts
  • MCP page covers popular AI agents and editors, with their logos
  • appMCP page to install sawit-mcp into every client and profile
  • coreinstall sawit-mcp into AI clients and every profile
  • applanguage logos for files in the tree and tabs
  • editorcompact left-aligned line numbers and icon view buttons
  • appimage, PDF and video viewers
  • coreimage size and PNG copies of HEIC/AVIF for the viewer
  • corerender PDF pages with CoreGraphics
  • appeditor with wrap, formatting, live preview and status line
  • corecode formatting with Prettier and per-language formatters
  • corecancel a running query
  • Sawit logo, title-bar mark and macOS app bundle
  • appshow/hide sidebar, center tabs and terminal dock
  • appclosable Server tab and Zed-style tab context menu
  • mcpsawit-mcp stdio server and DATABASE_URL to project .env
  • appdatabase panel, virtual table grid and SQL editor
  • coreconnection profiles, DATABASE_URL/.env, Keychain, schema, paging and SQL
  • appproject file tree and tabbed code editor with save
  • coreproject file listing, safe text reading and atomic save
  • appbottom-dock terminal tabs that run a login shell or herdr
  • coreheadless terminal emulation (PTY + alacritty_terminal) with input encoding
  • appZed-style shell with server manager, port conflict panel and live logs
  • corepg_ctl lifecycle with port preflight and live log tail
  • coreinstance registry and app paths
  • coredownload managed PostgreSQL binaries via postgresql_archive
  • corediscover installed PostgreSQL binaries
  • coreprobe listening ports with owner details
  • coreidentify port owners (docker, homebrew, postgres.app, sawit)
  • corelsof parsing and port conflict analysis
  • coreparse pg_ctl status output

Fixes

  • appeditor audit — disk changes, tab overflow, file tree, video keys
  • corefile kinds, wider language detection, safe reads and saves
  • appvirtual DB tree, disabled unreadable tables, reconnect and cancel
  • appreconnect dropped connections and mark unreadable tables
  • coreTLS per sslmode, pooler-safe settings, keepalives, privileges
  • apptable browser shows 50-row pages ordered by primary key
  • harden read-only queries, stable grid paging and input edge cases

Other

  • demo video, GIF and screenshots for the README
  • i18n: English UI, messages and docs
  • fat LTO, size-optimised cold crates, compressed DMG
  • refresh size and memory measurements
  • README for the editor, formatter, previews and viewers
  • README for pagination, tabs, layout, TLS, logo and bundling
  • README with build, run, architecture decisions and measurements
  • extend scope with text editor, herdr-capable terminal, Zed-style design
  • gpui-kit window with DataTable and async SELECT version()
  • workspace scaffold and tokio runtime bridge
  • Sawit design and stage 1 implementation plan