Skip to content

Releases

Templetry Desktop v1.14.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 14:23

What's Changed

  • Frontend lint (eslint) and CodeQL fixes by @Sebas1705 in #2

New Contributors

Full Changelog: v1.13.0...v1.14.0

Templetry Desktop v1.13.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 15:01

Full Changelog: v1.12.0...v1.13.0

Templetry Desktop v1.12.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 23:18

Full Changelog: v1.11.0...v1.12.0

Templetry Desktop v1.11.0

Choose a tag to compare

@github-actions github-actions released this 23 Aug 01:05

Full Changelog: v1.10.0...v1.11.0

Templetry Desktop v1.10.0

Choose a tag to compare

@github-actions github-actions released this 22 Aug 00:38

Full Changelog: v1.9.0...v1.10.0

Templetry Desktop v1.9.0

Choose a tag to compare

@github-actions github-actions released this 21 Aug 23:58

Full Changelog: v1.8.1...v1.9.0

Templetry Desktop v1.8.1

Choose a tag to compare

@github-actions github-actions released this 15 Aug 23:20

A one-line fix to something v1.8.0 introduced.

The selected template had two arrows

The Build sidebar marks the active form with a ▸. Its selector was .form.active span::before — and the taxonomy chips that arrived in v1.8.0 live in a <span> too, so the rule matched both. The result was one arrow beside the template's name and a second beside its chips on the row below.

Scoped to the name (> span:not(.taxtags)), which is what it always meant.

Worth noting

The chips and the marker were written a release apart and neither is wrong on its own; the defect only exists in their combination. A CSS selector that says "every span inside" is a promise about markup that has not been written yet — and this is what collecting on it looks like.

Verified by rendering the real sidebar with the real stylesheet and reading the computed styles back: ::before is now present on the name and none on the chips.


Windows SmartScreen still warns on the installer: these builds are not code-signed. Choose More info → Run anyway, or use the portable exe.

Templetry Desktop v1.8.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 21:26

Engine v1.10.0 gave every template a taxonomy — three axes describing what a form is, what it is written in and what it is built on (ADR-0017). This release makes the app read it.

Build: the catalog is navigable

Every form shows its axes as chips — kinds in brass, languages and frameworks quieter — and the catalog filters on them:

  • Kind chips, OR within the axis, the same semantics as templetry list --kind a --kind b. Only the kinds the loaded catalogs actually use appear; a chip that can never match anything is noise.
  • A text box matching name, description and every axis at once.

Parents with no matches disappear rather than leaving an empty heading, and when nothing matches the message says why it might be: a form that declares no taxonomy never matches a kind.

The catalog reached 25 forms across 10 parents this week. One flat list was already awkward.

Cloud: a template repo now says what it is

A repository carrying a template.yml was flagged as engine-readable and nothing more. That was not a display decision — the tree walk kept only the directory the manifest lived in, so there was nothing else to show.

It now keeps the manifest path, reads each one (bounded and concurrent) and parses it with the engine. Each detected form reports its name, description and taxonomy. A manifest that will not parse still appears with its path, labelled unreadable: the file is there, it simply says nothing the engine understands.

This works on GitHub, GitLab and Gitea alike, because it reuses the per-forge file reader that landed in v1.7.0.

Also

Runs on engine v1.10.0, which compiled unchanged — the fifth time a minor engine bump has cost the app nothing.


Windows SmartScreen still warns on the installer: these builds are not code-signed. Choose More info → Run anyway, or use the portable exe.

Templetry Desktop v1.7.1

Choose a tag to compare

@github-actions github-actions released this 15 Aug 17:10

A patch for the forge code v1.7.0 shipped with a stated caveat: it was written against GitLab's and Gitea's published APIs and had never run against a real server. It was wrong, in the way untested code is wrong.

What was broken

GitLab caps a recursive tree at 100 entries and walks it depth-first. For any repository of size, the first page comes back as nothing but directories. So a project full of markdown showed no documentation in the Cloud preview.

The quieter half is worse: template detection read the same truncated page, so a repository carrying a template.yml could be reported as not having one — a wrong answer indistinguishable from a right one.

Gitea had the same problem from the other side: it returned 1000 entries of a 10,004-entry tree and admitted it only in a truncated field nothing was reading.

Neither is exotic. Both are what happens when an API is modelled from its documentation rather than its behaviour — the docs describe the fields, not what a large repository does to them.

The fix

GitLab trees are now paged. Both forges share one named limit, stated in the code instead of inherited by accident, and ample for what the tree is used for: finding template manifests, which live near the root, and the first 40 markdown files.

How it was found

Live tests against public repositories on gitlab.com and codeberg.org. They use no token, so they need no account, and they assert only what the Cloud panel actually renders. They ship in this release:

go test -tags liveapi -run Live -v ./...

They are behind a build tag because they reach servers nobody here controls — a red result may mean the API changed, or merely that Codeberg is down.

Making them run unauthenticated exposed one more fix: an empty token was travelling as an empty auth header, which forges reject where they would otherwise have served a public repository.

Still not covered

The authenticated half — private repositories, and creating and pushing to a repo on GitLab or Gitea — genuinely needs an account and remains unexercised. The caveat shrank; it did not disappear.


Windows SmartScreen still warns on the installer: these builds are not code-signed. Choose More info → Run anyway, or use the portable exe.

Templetry Desktop v1.7.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 16:35

This release closes the gap between what the engine had shipped and what the app actually exposed. An audit of the desktop against engine v1.9.0 found six divergences; all six are fixed here.

Cloud works on every signed-in forge

The listing already merged GitLab and Gitea accounts — but everything you could do with a row still called the GitHub API. Opening a repository's preview or a doc returned a 404, and Clone demanded a GitHub session. A repository you can see and not touch is worse than one that is not listed.

Previews now dispatch on the row's account: project metadata, language shares, branches, pipelines and the docs tree, each degrading on its own the way the GitHub path always did. Cloning authenticates as the account the repository came from, so private repos on any forge clone. The template chip covers other forges too — they have no comparable content search, so trees are read per repository, concurrently and capped.

Templates from any forge

The desktop was the last consumer hardwired to GitHub for reading templates: it ignored the catalog's source field, so a catalog hosting forms on GitLab or Gitea worked from the CLI and not from the app. ADR-0015's read axis was half shipped. It now resolves the source scheme exactly as the CLI and the MCP server do, and passes a token — private templates were failing even on GitHub while the app held a valid one.

The fetch also moved out from under the app's mutex, where it used to freeze everything else for the length of a download.

Common pieces

On engine v1.9.0, which compiled unchanged. The pieces panel only ever saw what a project's own form ships, so the shared catalog's pieces were adoptable from the CLI and invisible here. A common piece now records its own repository in the answers file, so update fetches a fix from where it was made — recording the form's source there would have quietly broken the update cycle.

Drift covers pieces

Local checked the template's anchor and nothing else. Each applied piece has its own, so a fix released in a common piece was invisible even though the update preview would have found it. An unreachable source no longer counts as drift, so being offline decides nothing.

Verify a build, without installing anything

Verify was the one engine verb with no binding. Build gains Verify build: your inputs render to a temporary directory and compile inside the manifest's container (ADR-0004), log streaming as it goes. Needs Docker; nothing is installed on your machine and nothing is written to your folders.

Feature constraints are visible

Features declaring requires or conflicts now say so, and the actions stay blocked. Nothing is auto-fixed on purpose: the engine refuses these combinations rather than guessing which side you meant, and the app should not guess where the engine would not.

Also

Pushing to a repository on a non-GitHub forge blanked its credentials and fell back to your own git helper — a silent failure. Push now authenticates as the account that created the repository, with the credential username each forge actually wants.


Known limitation: the GitLab and Gitea API calls are written against their published APIs and verified by build and tests, not exercised against live servers. If something misbehaves on a self-hosted instance, that is the first place to look — open an issue.

Windows SmartScreen still warns on the installer: these builds are not code-signed. Choose More info → Run anyway, or use the portable exe.