Publish and pull
Zeku publishes with git, the same way you would in a terminal. Pushing to your repository is what starts a deploy on hosts such as Netlify, Vercel, and Cloudflare Pages.
Publish
Section titled “Publish”Press Ctrl+Shift+S, or click the publish button at the top right.
- Zeku saves every open post and lists what changed.
- Write a commit message, or keep the one Zeku suggests. To change the suggestion, set Commit message in Settings > Usability, using
{{date}},{{numFiles}}, and{{files}}for today’s date and the changed files, the same tokens as obsidian-git. - Click Publish. Zeku commits the changes, pulls anything new from the remote so the push goes through, and pushes.
Changes outside your content
Section titled “Changes outside your content”Publish lists changes to code and configuration, anything outside your content folder and public/, separately from your writing. That keeps a stray edit to a component or a config file from going live by accident. Click Leave them out to commit only your writing. The other changes stay on your computer, uncommitted, and Include them puts them back.
Publish also warns you when a post you’re publishing has a %%comment%% in it and your site doesn’t remove comments, so a note to yourself doesn’t go live by accident. See Comments.
Build errors
Section titled “Build errors”When a post you’re publishing has frontmatter your site’s build will reject, Publish says so before you push, since one bad value fails the whole deploy. It names the first problem, and each post with problems gets a Build error tag that lists them all when you point at it. Zeku checks:
- a field your schema requires that the post doesn’t have, including one written in a different case, like
Titlefortitle - a number where the schema wants text, like
title: 1984, which needs quotes, and text where it wants a number, a date, or a list - a value that isn’t one of an enum’s options, that’s outside the schema’s
.max()or.min(), or that doesn’t match its.regex(), and a list with more or fewer items than it allows - a URL or email field holding something that isn’t one
- a word like
noin a field that wantstrueorfalse - an
image()path with no image at it
Two more get a Build warning instead, since the build may get past them: a reference to an id the other collection doesn’t have, which fails only when a page uses it, and two posts with the same id, which Astro keeps one of and drops the other without failing.
Types and required fields come from the JSON schemas Astro writes. When your content config changed after they were written, as a pull can leave it, Zeku stops using them to call a value wrong until you run Update field types (astro sync), which the dashboard then offers as a button beside SEO. Anything the schema can’t tell Zeku for certain, like what z.coerce.string() or z.preprocess accepts, is left to Astro, and so are files Astro skips, like a draft named _name.md when your pattern leaves those out.
Press Ctrl+Shift+P, or run Pull from remote from the command palette, to bring in commits made somewhere else, such as edits from another computer or a change merged on GitHub.
When the remote has commits you don’t, the status bar shows how many. Click the count to pull them.
When git refuses
Section titled “When git refuses”Zeku explains what went wrong instead of showing git’s raw output, and offers to try again:
| Message | What to do |
|---|---|
| Git couldn’t sign in | Sign in to your git host once in a terminal or with your git credential manager, then try again. |
| Signed in, but no access | The account git uses can’t push to this repository. Sign in as an account that can, or ask for access. |
| You’re offline | Try again when you’re back online. |
| Unsaved changes | Zeku saves first, but a file changed outside Zeku may need a look. |