Skip to content

QuartzControl 1.1.0

Latest

Choose a tag to compare

@boxi-os boxi-os released this 18 Oct 15:48
· 2 commits to main since this release

A feature release: plugin options as forms, the layout on a stage, files for the layout box, and a
custom.scss that belongs to you again. Feedback is welcome — an issue is the easiest way.

Coming from 1.0.x

If you edit a project on more than one machine (Git sync), update every machine to 1.1 first and
only then move the styles over. As long as one machine still has 1.0, every save rewraps the
configuration for the other version.
The details:

  • "Move now" on the Styles page moves load order, fonts and variables from custom.scss into
    quartz/styles/_quartzcontrol.scss, with a snapshot taken first; a project created by 1.1 starts
    that way. Without "Move now", 1.1 keeps writing the 1.0 form. 1.0.x reads a moved project with
    0 variables and 0 stylesheets, and whatever is switched on there ends up as a second copy in
    custom.scss. A variable that 1.0.x changes there applies in dark mode only where 1.1 set no
    dark value, even though 1.0.x shows it as "both modes".
  • Line wrapping in quartz.config.yaml. 1.1 wraps long lines at 120 characters, as the Quartz
    CLI does; 1.0.x wrapped at 80. If both versions save in turn, every commit carries that rewrap,
    and two machines run into pull conflicts in lines nobody changed.
  • Back to 1.0 after moving: restore the snapshot taken before "Move now" in 1.1 first, and only
    then open the project with 1.0. 1.0.x does not know that kind of snapshot and thins it out like
    an automatic one with its next automatic snapshot.
  • Template packages from 1.1: import them into an existing project only after updating to 1.1.
    1.0.x puts the package's twelve stylesheets next to the project's old ones, and both designs end
    up on top of each other (the build stays green). A value "light only" in such a package is read
    by 1.0.x as a value for both modes.

What changed since 1.0.2

Plugins

  • Options as a form — sections, switches and drop-downs instead of a row of fields; an option
    that only applies under a condition appears only then. The plugin describes the form in its
    quartz.configSchema (format in
    docs/plugin-config-schema.md);
    without a schema the app reads the .d.ts files as before. The three own plugins ship one from
    quartz-layout-box 0.4.0, quartz-multilanguage 0.2.0 and quartz-navigations 0.4.0 — older
    versions get the plain form; raise them on the Updates page.
  • Files for the layout box — create, add, edit and rename HTML and Markdown snippets, add images
    to quartz/static/images; boxes that name a renamed file follow it.

Layout

  • A stage instead of a grid — the page as a schematic, components are dragged onto it, their
    options sit in the sidebar next to it.
  • Page types are chosen on the stage, with their own frame, greyed-out exclusions and Remove
    customization
    . The "Page types" tab is gone; an old link to it lands in the layout.
  • Breakpoint widths moved to the "Frames" tab (until 1.0 "Custom frames"); the "Global" tab is
    now called "Components".
  • The tray switches off. Dragging the only instance of a component into the tray sets the
    plugin to enabled: false (until 1.0 it stayed on); dragging it back switches it on again. That
    switches off the whole plugin, including everything it does besides the component.

Styles

  • custom.scss is yours again — see "Coming from 1.0.x" above for "Move now".
  • Variables now come before your own rules. After moving, the Styles page's variables stand
    before the rules in custom.scss; until 1.0 they came after. Your own rule now wins wherever it
    is at least as specific: :root { --x: … } against the light value,
    :root[saved-theme="dark"] against the dark one. A value "light only" sits under
    :root:not([saved-theme="dark"]) and wins in light mode against your own :root; to set it
    yourself, use :root[saved-theme="light"]. The Variables tab names the variables custom.scss
    sets itself.
  • The comment at the top of custom.scss in projects from the basic template up to 1.0 calls
    the variable block "further down this file"; after moving it lives in _quartzcontrol.scss. The
    comment does nothing, it is just wrong.

Templates

  • A leaner basic template — twelve stylesheets instead of 31.

The handbook (https://boxi-os.github.io/QuartzControl/) is up to date with this version.

Which file

System File
macOS, Apple Silicon QuartzControl-1.1.0-arm64.dmg — or .zip
macOS, Intel QuartzControl-1.1.0-x64.dmg — or .zip
Linux, x86_64 QuartzControl-1.1.0-x86_64.AppImage or quartzcontrol_1.1.0_amd64.deb
Linux, arm64 QuartzControl-1.1.0-arm64.AppImage or quartzcontrol_1.1.0_arm64.deb
Flatpak QuartzControl-1.1.0-x86_64.flatpak or …-aarch64.flatpak

Linux needs glibc 2.34 or newer for the bundled git — Ubuntu 22.04, Debian 12, RHEL 9,
Fedora 35 and later. On an older system the app starts and says it cannot use its own git; a git
from the package manager gets you going. The Flatpak does not raise the question.

Before the first start

macOS. The app is ad-hoc signed and not notarised; there is no Developer ID certificate, so
macOS refuses the first launch. Allow it under System Settings → Privacy & Security → Security →
"Open Anyway"
, within about an hour of the refused launch. Or clear the quarantine flag:

xattr -dr com.apple.quarantine /Applications/QuartzControl.app

After the update macOS asks again whether this version may use the Keychain — usually twice.
Answer Always Allow both times.

Linux. Make the AppImage executable and run it, or install the deb with
sudo apt install ./quartzcontrol_1.1.0_amd64.deb. For the Flatpak:

flatpak install --user QuartzControl-1.1.0-x86_64.flatpak

--filesystem=home is set, so projects under your home directory work as they are. A content
folder on another drive needs a one-off flatpak override --filesystem=<path>.

What is inside every package

  • Node and npm — Electron's own runtime (Node 24.18.1, npm 11.17.0), exposed as three shims on
    the PATH. Nothing to install.
  • git 2.53.0 — used only when the machine has none that answers; otherwise the system's own wins.
  • The basic template — for creating a project when there is no network.

Known limits

  • Not notarised on macOS, as above. No self-update: the start screen reports a newer
    version and links to it. No Windows, deliberately; the reasons are in the README.
  • Not started on its own kind of machine: the macOS Intel build (there is no Intel Mac here).
  • Not supported: Linux with glibc older than 2.34 (see above) or a system git older than 2.38.
  • A YAML error in the frontmatter of a single note stops the dev server. That is Quartz; the
    app shows the server as crashed.

Checksums (SHA-256)

0937b1d128c39f9150d9dda53cf7864608f9684ef6c9a61eed71671df1c1d722  QuartzControl-1.1.0-arm64.dmg
21bdbdb80d989940e41ffa26b7d09eedcb1480273b5855ae39ab720e92493962  QuartzControl-1.1.0-arm64.zip
69850e95c90f1e9e62cefd77c0ba856f1b0ab50ad61cde784121f3e40c911679  QuartzControl-1.1.0-x64.dmg
e9be78122478628a0247e229f815c89e2e8530a726912b79ba462839388fec62  QuartzControl-1.1.0-x64.zip
17ae41f88c9c0b05d8d8b766a971b480424fb91e2e09f2cfd696a5cacda63bef  QuartzControl-1.1.0-arm64.AppImage
1aae93ceed03c95600e76b29aca6e7cbd3760a5561cafe01eb67e9a459d85af7  QuartzControl-1.1.0-x86_64.AppImage
e6e553ccc6dfe5c5f6b7207073167289b4d33e75a0f8814df601e12dde98b8e2  quartzcontrol_1.1.0_arm64.deb
02d47de1f76130ebb07d305af2f4cc48a266a1eaa04685fa59be96934201dff3  quartzcontrol_1.1.0_amd64.deb
a1a369a2bd4503fa0e7143a3a4cdad29e33ede6f12c3a89aa3eb86fcaa85f89d  QuartzControl-1.1.0-aarch64.flatpak
d5b306e3644e259086940e77042853352a9b4da823470b28bf031ef05d3d4de4  QuartzControl-1.1.0-x86_64.flatpak