Note: This project is currently under active development. Documentation is incomplete and things may not work as expected. 🀯
Visit
Dismiss

All Docs

Guide

Introduction

What is Quark ?

Quark is a general purpose software tool specifically designed to help you create projects written in HTML, CSS and JavaScript with native desktop app like capabilities. Quark apps run on Mac, Windows, and Linux from a single codebase.

How does it work? 🀯

Simply Said: Quark comes with an integrated development environment(IDE) and a JavaScript runtime. You write your code in the IDE and press a button to build your project. That's all!

The IDE automatically takes care of building your project and emits a single output file which you can "double-click" on to open and run your project. We call these output files, "sketches".

For detailed explaination, read our announcement post on Medium.com

See the process in actionβ€Š-

####### In the example above, we create a Quark project, built the project and run the project. All done under 15 seconds!.

Quark Apps (or Sketches) 🎨

We call apps built with Quark, Sketches. Quark itself is built on top of the Electron framework. Your sketches provide you with all the capabilities of full fledged electron apps. The difference here is that they just weigh a few kilobytes instead of hundreds of megabytes.

We achieve this functionality by using a shared JavaScript runtime for all your sketches. This runtime, in most cases, accounts for almost 99% of the weight of an electron app. This leaves us with the actual application logic, which usually only weighs a few kilobytes.

The only caveat here is that because of this shared runtime, your sketches have a direct dependency on the Quark software itself to provide for the runtime. Hence we call these projects built with Quark "sketches" and not applications.

What this means for you is that you can potentially have hundreds of sketches on your machine providing the functionality as that of full fledged electron apps, while consuming the resources equivalent to only one app!

Web Technologies

Quark apps are built using web technologies like HTML, CSS and Javascript. If you can build a website, you already know how to build a Quark app.

Cross Platform 🧬

Another advantage of using web technologies is that your sketches are Compatible with Mac, Windows, and Linux and run on all three platforms. Write once, run everywhere!

Power of ElectronΒ πŸ’ͺ

Behind the scenes, we use electron's renderer process as the runtime for your Quark apps. This means, that you have access to all of the Node.js and Electron's renderer process API's in your app.

Unopinionated πŸ…

Anything you like, any way you like, in any style. We have out-of-the-box support for modern JavaScript, React.js, Vue.js and Typescript. Take your pick!

Powerful build system

Thanks to the powerful Quark IDE which makes transpiling, bundling and running a project as easy as pressing a button.

Releases

Quark releases frequently. We release when there are significant bug fixes, new APIs or are updating versions of Electron or Node.js.

Versioning

Once Quark releases in beta phase, it will follow semver. Before that no gurantees are made that the API will be changed in a backwards compatible way.

First Steps

To get the most out of Quark, start by reviewing a few introductory topics:


Setting up Quark

Getting up and running with Quark is quick and easy. It is a small download so you can install in a matter of minutes and give Quark a try.

Cross platform

Quark is a free software which runs on the macOS*, Linux and Windows operating systems and has been tested on the following platforms:

  • Windows 7 and 10 (64-bit)
  • Linux (Debian): Ubuntu Desktop 18.xx

Quark is a small download (~100 MB) and has a disk footprint of ~300 MB. Quark is lightweight and should easily run on today's hardware.

We recommend:

  • 1.6 GHz or faster processor
  • 1 GB of RAM

Windows

Installation
  • Download the Quark installer for Windows from the download page.
  • Once it is downloaded, run the installer (Quark-win-x64-${version}.exe). This will only take a minute.
  • By default, Quark is installed under C:\users\{username}\AppData\Local\Programs\Quark.

Alternatively, you can also download a Zip archive, extract it and run Quark from there. On the downside, you will need to manually update Quark for each release.

NOTE

It is recommended that you download the setup file(Quark-win-x64-${version}.exe) instead of the zip archive, since auto-updates are only supported via the .exe file.

If you're prompted by Quark, accept the newest update and it will be installed (you won't need to do anything else to get the latest bits).

Linux

Installation
  • Download Quark for Linux from the download page.
  • Once it is downloaded, add the execute permissions to the downloaded file (Quark-linux-x86_64-${version}.AppImage).
  • Run the appImage to start Quark.

Alternatively, you can also download the .tar.gz archive, extract it and run Quark from there. On the downside, you will need to manually update Quark for each release.

NOTE

It is recommended that you download the setup file(Quark-linux-x86_64-${version}.AppImage) instead of the .tar.gz archive, since auto-updates are only supported via the .AppImage file.

It is recommended that you install the following third party softwares on your PC which can be used with Quark.

Node.js is a platform for building fast and scalable server applications using JavaScript. Node.js is the runtime and npm is the Package Manager for Node.js modules.

Network

A handful of features within Quark require network communication to work, such as the auto-update mechanism, querying and installing node packages. For these features to work properly in a proxy environment, you must have the product correctly configured.

If you are behind a firewall which needs to whitelist domains used by Quark, here's the list of hostnames you should allow communication to go through:

  • quarkjs.io
  • release.quarkjs.io
  • social.quarkjs.io
  • npmjs.org

Updates

As long as Quark is in the alpha stage of development, we will release a new version every week, and monthly thereafter.

Versioning

Once Quark releases in beta phase, it will follow semver. Before that no gurantees are made that the API will be changed in a backwards compatible way.

Next Steps

Once you have installed Quark, these topics will help you learn more about Quark:

  • Quark IDE: A quick orientation to Quark IDE.
  • Getting Started: A "Hello World" example to get you started with Quark.
  • References: Learn how to use the Quark API.
  • FAQs: Frequently Asked Questions.

Getting Started

All docs on one page.

####### Estimated completion time : Less than 5 minutes.

Prerequisites

The official guide assumes intermediate level knowledge of HTML, CSS, and JavaScript.

Steps

Step 1: Installing the Quark IDE

You need to download and install the Quark IDE for your PC from here.

Step 2: Starting a new Project
  1. After installing Quark, open the IDE.
  2. You will be shown a welcome screen. Click on "Start a new Project"

Landing Page

  1. After entering the project name, click on 'Create' button.

Landing Page

  1. If the project was created successfully, you will be prompted to open the project. Click on "Open Project".

Landing Page

Step 3: Navigating through the IDE
  1. After opening the project your view may look something like this.

An image

  1. On the left hand side is the navigation pane. Use this pane to navigate around files and folders.
  2. Also there is a setup.js file, this file is used as the entry point of your code by the Quark build system while building your sketch.
  3. Double click on the file to open the editor. Your view should look something like this.

An image

Step 4: Writing your Code.
  1. Notice that our file already has one line of code, that prints a console message. We'll keep this tutorial to only one line of code.
  2. Let us change the console message to "Hello World, I'm Quark". Your code should now look like this.
console.log("Hello World, I'm Quark");
Step 5: Building the sketch
  1. To build the sketch, press the build button at the bottom right corner of the IDE.

Build

  1. To check the build logs, go to the Output section in Menu bar and select "Build: Focus". This will focus on the build logs output channel.

Build

  1. As visible in the output, our build was successful, now lets run the sketch.
Step 6: Running the sketch
  1. To run the sketch, press the run button at the bottom right corner (adjacent to the build button) of the IDE.
  2. This should run our sketch and a new window will pop open like so.

Build

  1. Notice the console message printed in the devtools output channel. This shows that our code ran properly.
The entire process could be summarized in the following video.

We create a new project, build the project, and run the project. All of which can be done within 15 seconds!!

Next Steps

Of course this is not all Quark has to offer, checkout the tutorials to learn mode advanced concepts.


Quark development environment

All docs on one page.

Now that you've seen Quark in action, let's see how you can configure it to get the most out of it.

Just like many other code editors, Quark adopts a common user interface and layout of an explorer on the left showing all of the files and folders in your project, an editor on the right showing contents of the file you've opened.

When you launch Quark project for the first time, you should get a screen that looks like this:

An image

Basic Layout

The IDE comes with a simple and intuitive layout that maximizes the space provided for the editor while leaving ample room to browse and access the full context of your folder or project. The UI is divided into five areas:

  • Editor - The main area to edit your files. You can open as many editors as you like side by side. Quark IDE uses the same code editor that powers the VS Code.
  • Side Bar - Contains different views like the Explorer to assist you while working on your project.
  • Status Bar - Information about the opened project and the files you edit.
  • Activity Bar - Located on the far left-hand side, this lets you switch between views.
  • Panels - You can display different panels below the editor region for output or debug information, errors and warnings, or an integrated terminal.

Code Editor

Quark comes bundled with Monaco code editor which is the same code editor used in VS Code. Monaco editor provides rich IntelliSense, validation and out of the box support for for HTML, CSS, SCSS, JSON, JavaScript and TypeScript.

Explorer

The Explorer is used to browse, open, and manage all of the files and folders in your project.

Here are the following things you can do in explorer:

  • Create, delete, and rename files and folders.
  • Move files and folders with drag and drop.
  • Use the context menu to explore all options.
Virtual File System

One of the unique capabilities of Quark is that is uses virtual file system, sometimes also referred to as in-memory file system. That means all the code that you write and files you create inside the IDE are virtual files with no foot print on your real file system. This is done to make sharing a project as easy as sharing a single file.

Quick Open

If you press Ctrl+p a search box will open. This will let you quickly search and open any file in your project by typing the name of the file.

An image

Command Palette

If you press Ctrl+Shift+P while focused in an editor pane, the command palette will pop up. This is a search driven menu that gives you access to just about any major task that is possible in Quark. Instead of clicking around all the application menus to look for something, you can press Ctrl+Shift+P and search for the command.

An image

Not only you can quickly search through hundreds of commands, but you can also see if there is a keybinding associated with it. You can use these keybindings to execute the command.

Terminal

In Quark, you can open an integrated terminal, initially starting at the root of your project. This can be convenient as you don't have to switch windows or alter the state of an existing terminal to perform a quick command-line task.

To open the terminal:

  • Use the Ctrl+\ keyboard shortcut with the backtick character.
  • Navigate to main menu and select Terminal > Fork Terminal.
  • From the Command Palette (Ctrl+Shift+P), use the Terminal: Fork Terminal command.
Managing multiple terminals

You can create multiple terminals open to different locations and easily navigate between them. Terminal instances can be added by clicking the plus icon on the top-right of the TERMINAL panel or by triggering the Ctrl+Shift+` command. This action creates another entry in the drop-down list that can be used to switch between them.

  • Remove terminal instances by pressing the trash can button. The terminal instance last focused on gets deleted.
  • You can also split the terminal by triggering the Ctrl+\ command or by pressing the Fork Terminal button or from the main menu.
Configuration

The shell used defaults to $SHELL on Linux and macOS, PowerShell on Windows. This can be changes in settings by going to Terminal > Process > Shell:*

Settings

It is easy to configure Quark to your liking through its various settings. Nearly every part of Quark's editor can be changed to your liking.

Quark provides two different scopes of settings:

  • User Settings - Settings that apply globally to any instance of Quark you open.
  • Workspace Settings - Settings stored inside your workspace and only apply when the workspace is opened. These settings are stored in the .quark/${project-name}.store.qrk file at the root of your project.

You can change the scope of settings by selecting the appropriate option from the select box at the top right corner of the settings window.

NOTE

Workspace settings take priority over user settings.

You can open the settings as follows:
  • Go to File > Preferences > Settings or trigger the Ctrl+, command.
  • Or, Open the Command Palette and select Preferences: Open Settings
Settings groups

Common settings are grouped together so that you can navigate through them easily.

Edit Settings

Each setting can be edited by either a checkbox, an input or by a drop-down. Simply edit the text or select the option you want to change to the desired settings.

NOTE

Note that changed settings have a marker besides them to help you identify them easily.

Changing the theme

You can change the theme by changing the setting Editor > Basic Settings > Theme of Editor.

Changing default keyBindings

You can change the default keybindings for the commands.

  1. Press Ctrl+k to open the keybinding editing panel.
  2. Click on the edit icon to the left of the command you want to change keybinding for.
  3. Enter the key combination and press enter to accept.

Installing node packages

Use the inbuilt npm client to install node packages for your projects. Simply type the name of the package and click install on the package that you want to install.

Terminology

You can find definitions for all of the various terms that we use throughout this module in our Glossary.


Hello world app

All docs on one page.

The project that we are finally going to build, will look something like this

Create a new Project

Just like we did it in previous module, create a new project.

Landing Page

Creating the directory structure

For this project, other than the base setup.js file, we are going to need 2 other files. Namely, index.css for our styles, and index.html for our HTML template.

Create both the files from the explorer view.## Your final directory structure should looke something like this:

Writing the code

First, copy the following code into their respective files. We'll explain the working later.

######## In the index.html file

<div class="hello-container">
	<div class="hello-world">
		<div> Hello World. I'm Quark! Yayyy!!!</div>
		<div class="emoji">😊</div>
	</div>
</div>

######## In the index.css file

.hello-container {
    font-weight: 900;
    display: block;
    height: 100%;
    background: #000000;## }

.hello-world {
    font-size: 50px;
    background-color: #000000;##     height: 100%;
    text-align: center;
    padding-top: 260px;
}

.emoji {
    font-size: 110px;
    animation: rotation 2s linear;
    animation-delay: 1s;
}

@keyframes rotation {
    from {
        -webkit-transform: rotate(0deg);
    }

    to {
        -webkit-transform: rotate(359deg);
    }
}

######## In the setup.js file

import html from './index.html';
import './index.css';

const element = quark.util.createElementFromHtml(html);
const view = quark.views.createTabsView('Hello World', element);
view.focus();

quark.util.setAppTheme({
    "background.dark": "#0D0A0B",##     "on.background.dark": "#ffffff",## 
    "background.default": "#0D0A0B",##     "on.background.default": "#ffffff",## 
    "background.light": "#1D1A1B",##     "on.background.light": "#ffffff",## 
    "background.divider": "#4D4A4B",## 
    "primary.default": "#25d55f",##     "on.primary.default": "#000000",## 
    "secondary.default": "#ff7246",##     "on.secondary.default": "#000000"## });
Working

The index.html and index.css files are pretty straight forward. We are simply creating an HTML template and assigning some styles corresponding to it.

For the setup.js file, let us explore different sections of the programe one by one.

1. Import statements

import html from './index.html';
import './index.css';

Here, we are importing the html template from the index.html file. Behind the scenes, this import statement is handled by the webpack's raw-loader, which return the raw content of the html file.

In the second statement, we are importing the index.css file. Behind the scenes, this import statement is handled by the webpack's css-loader and style-loader. The effect of this import statement is that these styles are automatically injected in the DOM.

2. Creating the view

const element = quark.util.createElementFromHtml(html);
const view = quark.views.createTabsView('Hello World', element);
view.focus();

This part is very specific to the Quark API. Use this API to control various aspects of the application like controlling the window state, showing system notifications, system dialogs and controlling the views.

All of this is API is available under the global namespace quark and no import statement is required to use this object. You can find the complete API references here.

In the current example, we are using the createElementFromHtml## method, which returns an HTMLElement from a template string.

The second method that we use is createTabsView## where we pass the name of the view (Hello World) and the HTMLElement as arguments. After the build, we will see the effect of this method.

3. Setting an app theme

quark.util.setAppTheme({
    "background.dark": "#0D0A0B",##     "on.background.dark": "#ffffff",## 
    "background.default": "#0D0A0B",##     "on.background.default": "#ffffff",## 
    "background.light": "#1D1A1B",##     "on.background.light": "#ffffff",## 
    "background.divider": "#4D4A4B",## 
    "primary.default": "#25d55f",##     "on.primary.default": "#000000",## 
    "secondary.default": "#ff7246",##     "on.secondary.default": "#000000"## });

This is another utility method that we use to set the applications theme by providing with some variables.

Building and running the project

As described in the previous tutorial, build the project by pressing the build button, and then run the project by pressing the run button.


Showcase

All docs on one page.

System resource monitor

  • Monitors system resources. View CPU loads, memory usage, process explorer.

Digital control systems

  • Digital control system made with Arduino UNO using pre-installed serialport library.

Plot Charts

Stock analyzing app

  • Analyze historic/real-time stock data.

News App

  • News app with multiple country and source filter.

Web Browser

  • Web browser with multiple tabs, split view support. (Written under 200 lines of code!!)

Note

Find these projects on Github


References

app

Provides methods to perform lower level operations.
app.showItemInFolder([fullPath])

Show the given file in a file manager. If possible, select the file. If no path is provided, opens the current process path.

  • returns void
app.beep()

Play the beep sound.

  • returns void
app.getAppMetrics()

Gets the ProcessMetric` object;

app.getAppPath()

Gets the installation path of the app.

  • returns string
app.getVersion()

Gets the current version of app.

  • returns string
app.showMessageBox(title, message, buttons[, type])

Shows a message box. Returns a promise that resolves to the text of the selected button.

  • arguments
    • title string
    • message string
    • buttons Array<string>
    • type ("none" | "info" | "error" | "question" | "warning") (optional)
  • returns Promise<string>
  • Usage
quark.app.showMessageBox('Select your hero', 'Superman or Batman?', ['Superman', 'Batman'], 'question')
.then((hero)=>{
    if(hero == 'Superman'){
        console.log('Meh!');
    }else {
        console.log('Yuss!');
    }
}).catch((err)=>{
    console.log(err);
});
app.showErrorBox(title, content)

Shows an error box.

  • arguments
    • title string
    • content string
  • returns void
  • Usage
quark.app.showErrorBox('Connection Failed!','Failed to connect to board at COM port 5');
app.showOpenDialog([options])

Shows a file/folder open dialog.

  • arguments
  • returns Promise<{ filePaths: Array<string>, bookmarks: Array<string> }?
  • Usage
quark.app.showOpenDialog({
    title : 'Open Logs',
    defaultPath : 'C://User/Desktop',
    properties : ['openFile', 'multiSelections']
}).then((result)=>{
    const filePaths = result.filePaths;
    const bookmarks = result.bookmarks;
    console.log(filePaths, bookmarks);
}).catch((err)=>{
    console.log(err);
});
app.showSaveDialog([options])

Shows a save dialog.

  • arguments
  • returns Promise<{ filename: string, bookmark: string }>
  • Usage
quark.app.showSaveDialog({
     title : 'Open Logs',
    defaultPath : 'C://User/Desktop'
}).then((result)=>{
    const filename = result.fileName;
    const bookmark = result.bookmark;
    console.log(fileName, bookmark);
}).catch((err)=>{
    console.log('user dismissed the dialog');
});

util

Utilitiy methods to quark api.
util.createContextMenu(items)
util.createElementFromHtml(html)

Creates an HTML element from string.

  • arguments
    • html string
  • returns Element
util.createFileSystemWatcher(path[, options])

Creates a file system watcher.

  • arguments
    • path string | Array<string>
    • options WatchOptions(optional)
  • returns Watcher
util.createInputBox()

Creates an Input box

util.createMainMenuItem(label, items[, priority])

Creates a main menu item.

util.createOutputChannel(name)

Creates an output channel.

util.createQuickView(name)

Creates a quick view pannel. Similar to the one used by commands.

util.createSnackbar(message[, type, duration])

Creates a snackbar notification.

  • arguments
    • message string
    • type 'danger' | 'success' | 'warning' | 'info'
    • duration number
  • returns SnackbarItem <!--
util.createVueWebComponent(name, data, createElement)

Creates a vuejs web component.

  • arguments
    • name string
    • data Vue.ComponentOptions<any>
    • createElement boolean
  • returns undefined | HTMLElement -->

window

Controls for window state of your app.
window.blur()

Removes focus from the window.

  • returns void
window.center()

Moves window to the center of the screen.

  • returns void
window.close()

Try to close the window. This has the same effect as a user manually clicking the close button of the window.

  • returns void
window.focus()

Focuses on the window.

  • returns void
window.getBounds()

Returns the position and size of the current window.

window.getOpacity()

Gets the opacity of the current wondow.

  • returns number
window.hide()

Hides the current window.

  • returns void
window.maximize()

Maximizes the window. This will also show (but not focus) the window if it isn't being displayed already.

  • returns void
window.minimize()

Minimizes the window. On some platforms the minimized window will be shown in the Dock.

  • returns void
window.reload()

Reloads the current windiw.

  • returns void
window.restore()

Restores the window from minimized state to its previous state.

  • returns void
window.setAlwaysOnTop()

Sets whether the window should show always on top of other windows. After setting this, this window will always stay on top of other windows.

  • returns void
window.setBounds(bounds[, animate])

Resizes and moves the window to the supplied bounds. Any properties that are not supplied will default to their current values.

  • arguments
    • bounds - Rectangle
    • animate - boolean(optional) macOS
  • returns void
  • Usage
quark.window.setBounds({
    height : 600,
    width : 600,
    x : 0,
    y : 0
});
window.setEnabled([enabled])

Disable or enable the window.

  • arguments
    • enabled boolean
  • returns void
  • Usage
quark.window.setEnabled(true);
window.setOpacity(opacity)

Sets the opacity of the window. On Linux does nothing. Value must be between 0-1.

  • arguments
    • opacity number
  • returns void
  • Usage
quark.window.setOpacity(0.5);
window.setProgressBar(progress[, mode])

Focuses on the window.

  • arguments
    • progress number
    • mode ('none' | 'normal' | 'indeterminate' | 'error' | 'paused')Windows
  • returns void
quark.window.setProgressBar(0.3);

//Or for windows
quark.window.setProgressBar(0.4, 'error');
window.isResizable()

Returns whether the window is resizable or not.

  • returns boolean
window.setResizable(resizable)

Sets the window as resizable or not resizable.

  • argumants
    • resizable boolean
  • returns void
window.show()

Shows and gives focus to the window.

  • returns void
window.unmaximize()

Unmaximizes the window.

  • returns void
window.capturePage(callback)

Captures a snapshot of the whole visible page. Upon completion callback will be called with callback(image). The image is an instance of NativeImage that stores data of the snapshot.

  • arguments
    • callback (image : NativeImage) => void
  • returns void
  • Usage
quark.window.capturePage((image) => {
    //your code here, example:
    console.log(image);
});
window.executeJavaScript(code)

Evaluates code in page. Returns a promise with the result of the executed code.

  • arguments
    • code string
  • returns Promise<any>
  • Usage
const code = `
    console.log('Hello');
`
quark.window.executeJavaScript(code).then((result)=>{
    console.log(result);
}).catch((err)=>{
    console.log(err)
});
window.getFrameRate()

Returns the frameRate of the window

  • returns void
window.getZoomFactor()

Gets the current zoom factor and returns a promise that resolves to the value of zoom factor.

  • returns Promise<number>
  • Usage
quark.window.getZoomFactor().then((factor)=>{
    //Your code here; example:
    console.log(factor);
}).catch((err)=>{
    console.log(err)
});
window.getZoomLevel()

Gets the current zoom level and returns a promise that resolves to the value of zoom level.

  • returns Promise<number>
  • Usage
quark.window.getZoomLevel().then((level)=>{
    //Your code here; example:
    console.log(level);
}).catch((err)=>{
    console.log(err)
});
window.insertCSS(css)

Injects css into the current web page.

  • arguments
    • css string
  • returns void
  • Usage
const css = `
    my-element {
        background-color : red;
    }
`
quark.window.insertCSS(css);
window.setZoomFactor(factor)

Changes the zoom factor to the specified factor. Zoom factor is zoom percent divided by 100, so 300% = 3.0.

  • arguments
    • factor number
  • returns void
  • Usage
quark.window.setZoomFactor(0.3);
window.setZoomLevel(level)

Changes the zoom level to the specified level. The original size is 0 and each increment above or below represents zooming 20% larger or smaller to default limits of 300% and 50% of original size, respectively. The formula for this is scale := 1.2 ^ level.

  • arguments
    • level number
  • returns void
  • Usage
quark.window.setZoomLevel(0.5);

views

Create and control views of your app.
views.createSideView()

Creates a side view.

views.createBottomView()

Creates a bottom view.

views.createTabsView()

Creates a tabs view.

views.sideviewController
views.bottomviewController
views.tabsviewController

commands

Register globally executable commands that trigger an action on invocation.
commands.registerCommand(id, handle[, thisArg, label])

Registers a globally executable command.

  • arguments
    • id string
    • handle Function
    • thisArg any(optional)
    • label string(optional)
  • returns IKeyBindingRegister
  • Usage
Registering a command.
quark.commands.registerCommand('my.awesome.command.id', () => {
    console.log('I ran');
});

quark.commands.executeCommand('my.awesome.command.id');
//logs `I ran` to console.
Adding a KeyBinding to the command.
const register = quark.commands.registerCommand('my.awesome.command.id', () => {
    console.log('I ran');
});
register.addKeyBinding('ctrl+i');
//Now pressing the key combination "ctrl+i" will invoke the command.
Passing arguments to the command.
quark.commands.registerCommand('my.awesome.command.id', (label) => {
    console.log(label);
});

quark.commands.executeCommand('my.awesome.command.id', 'I ran');
//logs `I ran` to console.
Adding command to the commands palette.

The example below shows how to add a command to the commands palette. The only thing you need to do differently is to provide the label argument to the commands.registerCommand function.

quark.commands.registerCommand('my.awesome.command.id', () => {
    console.log('I ran');
}, null, 'My Awesome Command');

Now the command should be available in the commands palette like so.

registered-command

commands.executeCommand(id, [...args])

Executes a registered command.

  • arguments
    • id string
    • ...args any
  • returns void
commands.getCommand(id)

Returns a registered command with the provided id.

  • arguments
    • id string
  • returns ICommand | undefined
  • Usage
//e.g. Getting a command and then disposing it.
const command = quark.commands.getCommand('my.awesome.command.id');
command.dispose();
//unregisters the command
commands.getAllCommands()

Returns an array of all the registered commands.

//e.g. filtering all commands registered in commands palette.
const commands = quark.commands.getAllCommands().map((command) => {
    if(command.label) {
        return command;
    }
});

storage

Store data
inMemory

Store temporary data in memory while your code is running. As soon as the window is closed, all data is lost. The data may or may not be JSON serializable.

local

Store data locally in an external file. File is created on per project basis. You can only store JSON serializable data.

global

Store data locally in an external file. Common for a system. You can only store JSON serializable data.


clipboard

Perform copy and paste operations on the system clipboard.
clipboard.readText()

Returns the text saved in clipboard.

  • returns string
clipboard.writeText(text)

Writes text to clipboard.

  • arguments
    • text string
  • returns void
clipboard.readHTML()

Returns the markup saved in clipboard.

  • returns string
clipboard.writeHTML(text)

Writes markup to the clipboard.

  • arguments
    • text string
  • returns void
clipboard.clear()

Clears the text saved in clipboard.

  • returns void

icons

Register icons to be used in UI components.
icons.registerIcon(icon)

Registers an icon in global icon namespace.

  • arguments
  • returns void
  • Usage
quark.icons.registerIcon({
    name: 'my-custom-icon',
    path: './my-custom-icon.svg'
});

const view = quark.views.createSideView('my-side-view', document.createElement('my-custom-element'));
view.icon = 'my-custom-icon';
view.focus();
icons.registerIcons(icons)

Registers multiple icons in global icon namespace.

icons.registerIconInNamespace(icon, namespace)

Registers an icon under a namespace.

  • arguments
    • icon Icon
    • namespace string
  • returns void
  • Usage
quark.icons.registerIconInNamespace({
    name: 'my-custom-icon',
    path: './my-custom-icon.svg'
}, 'my-namespace');

const view = quark.views.createSideView('my-side-view', document.createElement('my-custom-element'));
view.icon = 'my-namespace:my-custom-icon';
view.focus();
icons.registerIconsInNamespace(icons, namespace)

Registers multiple icons under a namespace.

  • arguments
  • returns void
Tip

Quark comes pre installed with Material icons and Ionicons. You can use them in your views as follows:

/*
 * Using material icons.
 * All material icons are registered under the namespace 'mat'
 */

const view = quark.views.createSideView('my-material-icon-view', document.createElement('my-custom-element'));
view.icon = 'mat:close';

/*
 * Using ionicons.
 * All ionicons are registered under the namespace 'ionicon'
 * 
 * Important: You also have to specify the platform of the icon. i.e. 'md-' or 'ios-' before the name of the icon.
 * e.g. 'ionicon:md-close' would work but 'ionicon:close' would not.
 */

const view = quark.views.createSideView('my-ionicon-view', document.createElement('my-custom-element'));
view.icon = 'ionicon:md-close';

Structures

ViewProvider

Methods

dispose()

Removes the view

  • returns void
isVisible()

Returns boolean.

  • returns void
hide()

Hides the view.

  • returns void
show()

Shows the view.

  • returns void
isFocused()

Returns true if the view is focused.

  • returns boolean
blur()

Removes the focus from view and selects previous view.

  • returns boolean
onWillCreateElement()

Removes the focus from view and selects previous view.

  • returns void
onDidCreateElement()

Removes the focus from view and selects previous view.

  • returns void
onDidConnectElement()

Removes the focus from view and selects previous view.

  • returns void
onWillRemoveElement()

Removes the focus from view and selects previous view.

  • returns void
onDidRemoveElement()

Removes the focus from view and selects previous view.

  • returns void
onCanEnterView()

Removes the focus from view and selects previous view.

  • returns Promise<boolean> | boolean
onDidEnterView()

Removes the focus from view and selects previous view.

  • returns void
onCanRemoveView()

Removes the focus from view and selects previous view.

  • returns Promise<boolean> | boolean
onDidRemoveView()

Removes the focus from view and selects previous view.

  • returns void
getProgressBarValue()

Removes the focus from view and selects previous view.

  • returns number | 'indeterminate'
setProgressBar([value])

Removes the focus from view and selects previous view.

  • arguments
    • value number
  • returns void

Properties

label
  • type string
element
  • type Element
keepConnected
  • type boolean
busy
  • type boolean
badge
  • type string | number
icon
  • type string
tooltip
  • type string
data
  • type any
actionIcon
  • type string
contextMenu
buttons
inputField
selectField

TabsviewController

getCurrentView()

Returns the current .

getCurrentView()

Returns all registered s.

  • returns Array<ViewProvider>
isNavbarVisible()

Returns boolean.

  • returns boolean
toggleNavbar()

Toggles the navbar.

  • returns void
hideNavbar()

Hides the navbar.

  • returns void
showNavbar()

Shows the navbar.

  • returns void
selectNextView()

Selects the next .

  • returns void
selectPreviousView()

Selects the previous .

  • returns void
triggerUpdate()

Triggers update.

  • returns void
removeView(view)

Removed the view.

getViewById(id)

Removed the view.

  • arguments
    • id - string
  • returns void
setView(view)

Removed the view.


SideviewController

getCurrentView()

Returns the current .

getCurrentView()

Returns all registered s.

  • returns Array<ViewProvider>
isNavbarVisible()

Returns boolean.

  • returns boolean
toggleNavbar()

Toggles the navbar.

  • returns void
hideNavbar()

Hides the navbar.

  • returns void
showNavbar()

Shows the navbar.

  • returns void
selectNextView()

Selects the next .

  • returns void
selectPreviousView()

Selects the previous .

  • returns void
triggerUpdate()

Triggers update.

  • returns void
removeView(view)

Removed the view.

getViewById(id)

Removed the view.

  • arguments
    • id - string
  • returns void
setView(view)

Removed the view.

isVisible()

Returns boolean

  • returns boolean
toggle()

Toggles view visibility.

  • returns void
hide()

Hides the view.

  • returns void
show()

Shows the view.

  • returns void
maximize()

Maximizes the view.

  • returns void
minimize()

Minimized the view.

  • returns void

BottomviewController

getCurrentView()

Returns the current .

getCurrentView()

Returns all registered s.

  • returns Array<ViewProvider>
isNavbarVisible()

Returns boolean.

  • returns boolean
toggleNavbar()

Toggles the navbar.

  • returns void
hideNavbar()

Hides the navbar.

  • returns void
showNavbar()

Shows the navbar.

  • returns void
selectNextView()

Selects the next .

  • returns void
selectPreviousView()

Selects the previous .

  • returns void
triggerUpdate()

Triggers update.

  • returns void
removeView(view)

Removed the view.

getViewById(id)

Removed the view.

  • arguments
    • id - string
  • returns void
setView(view)

Removed the view.

isVisible()

Returns boolean

  • returns boolean
toggle()

Toggles view visibility.

  • returns void
hide()

Hides the view.

  • returns void
show()

Shows the view.

  • returns void
maximize()

Maximizes the view.

  • returns void
minimize()

Minimized the view.

  • returns void

ButtonField

label
  • type string
handle
  • type Function
icon
  • type string(optional)

ContextMenuRef

Methods

dispose()

Removed the menu and clears the associated resources.

  • returns void
update(menu)

Updates the menu.

show(x, y)

Shows the ContextMenu at the specified x and y positions.

  • arguments
    • x number
    • y number
  • returns void

Properties

items

Menu items.


ICommand

id
  • type string
handle
  • type Function
thisArg
  • type any(optional)
label
  • type string(optional)
dispose
  • type Function

SnackbarItem

buttons
dispose()
  • type Function
duration
  • type number
element
  • type HTMLElement
id
  • type string
message
  • type string
show()
  • type Function
  • returns void
type
  • type "danger" | "success" | "warning" | "info"

SnackbarItem

label
  • type string
handle()
  • type Function
icon
  • type string

Icon

name

The name of the icon.

  • type string
path

The path of the icon file.

  • type string

IKeyBindingRegister

addKeyBinding(keybindings[, when])
  • arguments
    • keybindings - string | Array<string>
    • when - string(optional)
  • returns void

InputField

placeholder

Placeholder for the select field.

  • type string
currentValue

Current value of the select field. Must be one of the values provided in options array.

  • type Function
isHidden

Controls whether the field is visible or hidden.

  • type boolean
handle
  • type (value?: string) => void

MemoryStore

get(path[, defaultValue])

Gets the property value at path of object. If the resolved value is undefined the defaultValue is used in its place.

  • arguments
    • path string
    • defaultValue any(optional)
  • returns any
set(path, value)

Sets the value at path of object. If a portion of path doesn’t exist it’s created. Arrays are created for missing index properties while objects are created for all other missing properties.

  • arguments
    • path string
    • value any
  • returns any
update(path, updater)

This method is like set except that accepts updater to produce the value to set.

  • arguments
    • path string
    • updater (value) => any
  • returns any
has(path)

Checks if path is a direct property of object.

  • arguments
    • path string
  • returns boolean
delete(path)

Deletes the property of the object.

  • arguments
    • path string
  • returns void
size()

Gets the size of collection by returning its length for array-like values or the number of own enumerable properties for objects.

  • returns number

label

Label of the menu item.

  • type string
command

Command to execute on click.

  • type string | Function(optional)
children

Children of the menu item.

  • type Array<MenuItem>(optional)
divider

Controls whether to show divider or not.

  • type boolean(optional)
icon

Icon to show at the menu item.

  • type string(optional)
disabled

Icon to show at the menu item.

  • type boolean(optional)

Methods

dispose()

Removed the menu and clears the associated resources.

  • returns void
update(menu)

Updates the menu.

Properties

items

Menu items.


PersistantStore

get(path[, defaultValue])

Gets the property value at path of object. If the resolved value is undefined the defaultValue is used in its place.

  • arguments
    • path string
    • defaultValue any(optional)
  • returns any
set(path, value)

Sets the value at path of object. If a portion of path doesn’t exist it’s created. Arrays are created for missing index properties while objects are created for all other missing properties.

  • arguments
    • path string
    • value any
  • returns any
update(path, updater)

This method is like set except that accepts updater to produce the value to set.

  • arguments
    • path string
    • updater (value) => any
  • returns any
has(path)

Checks if path is a direct property of object.

  • arguments
    • path string
  • returns boolean
delete(path)

Deletes the property of the object.

  • arguments
    • path string
  • returns void
size

Gets the size of collection by returning its length for array-like values or the number of own enumerable properties for objects.

  • returns number
forceUpdate([, key])

Writes the store's data to the file system.

  • arguments
    • key string(optional)
  • returns void
onDidChange(key, callback)

Watches the given key, calling callback on any changes. When a key is first set oldValue will be undefined, and when a key is deleted newValue will be undefined.

  • arguments
    • key string
    • callback (newValue, oldValue) => void
  • returns void

SelectField

placeholder

Placeholder for the select field.

  • type string
currentValue

Current value of the select field. Must be one of the values provided in options array.

  • type Function
isHidden

Controls whether the field is visible or hidden.

  • type boolean
options
  • type Array<string>
viewOptions
  • type Array<string>
handle
  • type (option?: string) => void

Snippets

Auto updates

All docs on one page.

Quark comes pre-built with auto-updates feature. But this feature is only supported in a few distributions.

Auto-updatable distributions
  • MacOS: DMG
  • Linux: AppImage
  • Windows: EXE

Since Quark is currently a beta software, we are shipping updates almost daily. It is highly reccomended that you only download these distributions to get the latest features and bug fixes.

Release channels

We support 2 release channels.

  1. Insiders release: Insiders has the most recent code pushes and may lead to the occasional broken build. New releases are published almost every other day.
  2. Stable release: Only stable releases are published on this channel. This channel may be updated once a month.

By default, your release channel is set to Stable. You will need to change this setting to move to the insiders release.

Selecting the release channel

You can select the release channel from settings.## (Settings > General > Auto Updates > Release channel)

screenshot

Disabling auto-updates

You can optionally choose to disable auto-updates feature from Settings > General > Auto Updates > Disable auto-updates


Convert existing electron app to a sketch

All docs on one page.

####### Write the following code in the entry point of your application. In this case, index.js file.

// index.ts
import * as path from 'path';
import * as fs from 'fs';
import { remote } from 'electron';

quark.views.tabsviewController.hideNavbar();

const indexFilePath = path.resolve(`./${__projectfile}/index.html`);

const view = quark.views.createTabsView('My Electron App', document.createElement('webview'));
view.onDidConnectElement = () => {

    const url = `file://` + indexFilePath;

    let webview: Electron.WebviewTag = view.element as any;
    webview.setAttribute('src', url);
    webview.setAttribute('nodeintegration', '');
    webview.setAttribute('style', "display:flex;height:100%");

    const devtools = quark.util.createOutputChannel('App logs');
    devtools.show();

    webview.getWebContents().on('console-message', (e, level, message, line, sourceId) => {
        devtools.appendLine(message);
    });

    const status = quark.util.createStatusBarItem();
    status.text = 'Toggle dev tools';
    status.show();
    status.command = () => {
        webview.getWebContents().toggleDevTools();
    }
}
view.focus();

####### Build and test the application. First build the application, and then package the application into the archive format. To pack the application, select Builder: Package command from the command palette.

If the application was packed successfully, test the app by running the command Run: Package.


Configuring build

All docs on one page.

####### Create the config file Create a webpack.config.js file at the root of your project. e.g.

.
β”œβ”€ setup.js
└─ webpack.config.js

####### Add webpack config Config reference

// webpack.config.js
module.exports = {
    ...
}

Caveats

Quark uses an in-memory file system with webpack. This requires a little patch behind the scenes. The only thing you need to remember is that:-

  1. The entry key must be an object with a src key.
  2. The value of this key must concat /src/ in front of the absolute file path of the file you want to be the entry point of your application.

Example: If your entry point file is index.ts at the root of your project, your config must look like this-

// .
// β”œβ”€ setup.js
// β”œβ”€ index.ts
// └─ webpack.config.js
{
    ...
    "entry": {
        "src" : "/src/index.ts"
    }
}

Example: If your entry point file is index.ts nested inside of a folder (view), your config must look like this-

// .
// β”œβ”€β”€ view
// β”‚   └── index.ts
// β”œβ”€β”€ setup.js
// └── webpack.config.js
{
    ...
    "entry": {
        "src" : "/src/view/index.ts"
    }
}

Releases

Release Notes

Version: Quark-v0.6.x

Quark 0.6.2 - September 29, 2019

Minor Changes:
  • πŸš‘ Fixed angular-split issue
🐞 Bug Fixes:
  • πŸš‘ Fixed menubar showing issue on landing page
  • Enabled webview tag
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-win-0.6.2.exe AxbhzSej8eL76UDOnRNCRyP2GiaP4tYltbhZXAi6A7JlEBH7jVBz+PXDTqoCAXx8NAAxkK8imOcgIjA2HMVQ5g==
Quark-win-x64-0.6.2.msi WYKOCuJsmqiJ5B4FRg362ozllzOmB0oaBW7nawJY9dcH53di7W9MU/FVMUx+HV7zqxV5lRhlu5G2xVnwsJh37A==
Quark-win-x64-0.6.2.zip a/skPj9QuzDJxFVaInj/G7v6ruiznZZV/84vWBPS3T/gX+IUNPDrNvUZ4i2Rxtpu4TNzi5JAN6NKM5YmYSUZZw==
Quark-linux-amd64-0.6.2.deb eJNcvSNoV7sfruJXMEV3ZwTeYpjMC96nqRX+CbK7J9nSNyGvG3V40BVSRfUY1R1uPTEypvdODV5V/5VJlUC46A==
Quark-linux-x64-0.6.2.tar.gz 67qa3hLh9cX2tAvOBxKBWk/S13mx+c3ifIVNaTBH4zOh6TJveGcmcB44raVxBZKCL9rvup/v9MF6pTm/KfH49w==
Quark-linux-x86_64-0.6.2.AppImage gt6AmiJt68U96cTD8b7cBBJY3oKiRPLGVlPFaHme4mt/de8hfyHnS9hV713lIlv06rmHASYwYl5viQ8WVEf9Og==
Quark-mac-0.6.2.zip Uq4Z5Kn6x4LILe+n5mLcAR53ZJqkEnPt3McdajYpZaL87hlljbPPUGavGteC8WUJNOISwj60FchQ2VjlVMtRHA==
Quark-mac-0.6.2.dmg NLc9hpiDTooV27GjadlWAr6ewMRRKmb5W6fNWJz31GdUC/hixkABO6jm3SFrxZ5+GloNxhPXEdBkLtnesqeoZg==

Quark 0.6.1 - September 19, 2019

This version was never released in the stable channel because the insiders release was found to have major bugs.

πŸ’” Breaking:
  • Removed johnny-file library
Major Changes:
  • ⬆️ Updated electron from version 4 to version 6
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-win-0.6.1.exe 6elAl6rXGf6QGx6d7xLEWwjjR7TDtfxb/z1t+HGNlVw0Xa4n/Okxz+3uDwqyQQwtXSupM35itlad+gY3uhLANA==
Quark-win-x64-0.6.1.msi rGTsVAdDycuglJdfB+xKBSxCZYJwdnrXEByhL3nTlOHjnzSpTkXDpvZbx79zMG4h1Ggsi8d2WP1czkrepC9Kvw==
Quark-win-x64-0.6.1.zip l71IXoOLkSknJwqIfl79889j1wTEUx+GcVCojx5QmDVw8qGfFL/m2uZXRn089H3qIKuiYTntminMF3e5SKlLQw==
Quark-linux-amd64-0.6.1.deb wbqLWxlbJXQ3c6/G2Y3ukvV8A6Zx/lsJ1mwUGm+eD3NV0jgWVvrk/sIz+y8CZiyPKzTitcSK+9xrEEKHyv7YmQ==
Quark-linux-x64-0.6.1.tar.gz UwfHOpWwWt6YLfXYtjaqKQscisuIGLlHNy/5sYn4bdjfPJwckNJ882CI6Na8Ssi4YcN0GsscIMz2MIOqwYnpQw==
Quark-linux-x86_64-0.6.1.AppImage 5U7ku7Td72h5lhF7Ett0/1PVeRtdgkMgXVc7325Ti87LqATyAhiCdYk1Uglt5hEgl8i41QG3P8d+F9ySTktftg==
Quark-mac-0.6.1.zip DiTB8KVe0dAxTb+RDljLWAXctPTn5hkiKi6zYNMADGqMgjZWH33/AiFtAhcPZJYzMntN0vqxbFD2qw+dzPoPaA==
Quark-mac-0.6.1.dmg 3EJgsFJmtQfpWheVHV8ONUVMdOtKWhrf63LIWTLAZbiRjFDQacbYSBkkAMkkt9kvDlf+O2VsPABLdXLSn+My0Q==

Quark 0.6.0 - August 30, 2019

Other changes:
  • Dependency updates
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-win-0.6.0.exe yKOqM5twYGXDsC7w14NypwEzdRYxWNxrIqf+nKpGQlrpSN9jvYUJbkndCY7NR7nQHhNAfSGHrV2neBsHQcQU3g==
Quark-win-x64-0.6.0.msi Jm2r1NzNkphW+swsTBWcGO9ugeh1SR1jNbdCgQMCcA446O3Rf149kvLJv9FTAfWDavyN81guBewN7hANqwBYvQ==
Quark-win-x64-0.6.0.zip oAS8pFl7lv2DgbCYfqEz5tlTScdHSqHHAeCXhRgXgk/F6XL2vRQf3gVkOLToeiZ/ZLI0gWnNj4Pp4irjzMcYnA==
Quark-linux-amd64-0.6.0.deb BAZjDcCArt34O9EEHCc+bTA4gE9qhHPsNg+lRYEfiR7b0wk7qYtr6PKgJpL4h8iI+yhgrPiZhXsA92R8aLG/Vw==
Quark-linux-x64-0.6.0.tar.gz MAGyg6i1+WQBfBV580WfHDEThzcZSnwOr72ZVJzyTLG0yOzvIuJ6SzQdN76WlagIfSe9MRjWPcorePxOLdUboA==
Quark-linux-x86_64-0.6.0.AppImage vVdH9WIA2aenGUNU1+ju0wC+uIx/f7XL0Z2YwOFoMByGo+j/Wy7beo2rkag4ZKgBWPwploGYquEeKvMjttnTOA==
Quark-mac-0.6.0.zip tJsownWDBsZwEDG6IUZndoWSKl4xR2xWGCQZYLMnW7IbhfIDQY941ngY8vMdo56aypGslW4mdTHUxnV4qRlhOw==
Quark-mac-0.6.0.dmg Gsu8Q1XbxgmyQT77h+EKLNMsg02D2h3ZR8sApt5hxOnqg14HG533L52wRxtEeiX/PROnC/e1B12vch+kEnq0wQ==

Release Notes

Version: Quark-v0.5.x

Quark 0.5.8 - August 21, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed MacOS app notarization bug.
Other changes:
  • Dependency updates.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-win-0.5.8.exe faVWmBNHtmmSgg8IM1NoM27jPpNODni/hf8INIOVVssJC1w5mfpCdXyDMe9IK3mugwFgHD7PPKYmNj5u0Qu0DA==
Quark-win-x64-0.5.8.msi d2cGNXLMu28N0TnRwiO9sE9NgVJM0xs1CtZIFnmKQfmAC3eyfiFGxpZJKafSYbwhJNYChyE0n0VGOOAAVauwpA==
Quark-win-x64-0.5.8.zip WT/bHsrzJyh2nCFnfj56touHu3QN2wpZXy5Zd80nmJMLXqwf9ScldE9YLxU2gF4FW7nu3OWwAq+/nDA6FRpR6g==
Quark-linux-amd64-0.5.8.deb VcSntRIpodtiQMeyEXxM3SLyWR17vQgrq0F8P/k2mht0zWJ5X0oxmRf5CJCSEgVjEgWdPO/a6eCntkl6XOwGNw==
Quark-linux-x64-0.5.8.tar.gz CQTqFzVsrw4vUlOw74RcMsWlg/OahArj2TSL0LGWVGWKxt4ZCKEfpJL9YtBey0d3f8AN3sTGHBsc4CwgKzE9cQ==
Quark-linux-x86_64-0.5.8.AppImage FJhrt7uaJYokrRJWH2bDyGM5QtYU6lk3GENwdGFdXpNrGaBSP0rJ5FYqJDNAgKg8Q1Q49zK9hEzSwHEhdpk/Gg==
Quark-mac-0.5.8.zip iCaCzsYFwCIN9VYHLEYchVFwTxylrz0bPQ4AlQ6MpPWZzsWZRHe4WNQhDLsQ+GN8o1z3pAT35Eqj4k1uN0U57g==
Quark-mac-0.5.8.dmg 76aW1Fld816STb7LmpBQKIh9eomeaZi8CWS0IzJlWgDyKQ2c3a5a4nK26sDlNr9uqHO2aOwfILbG99bQQ01yaw==

Quark 0.5.7 - July 29, 2019

Minor Changes:
  • Mainly dependency updates.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-win-0.5.7.exe zAwWw4mqqcn0z3db3PfG8pn5+acI/wg3vEJBu3tW0QGvOCDOvWr/WYz8Emn5PsrZ1oyzVrH54kpCNvSN29X6Vg==
Quark-win-x64-0.5.7.msi WNNFBy6ziwZAfpOxtcmgNvHtan3/fcaEtJQ/Y48jN7xhCnSR0RLR37qWbDmU8OV6nsKikPvH94Q+FoMmb2/ttQ==
Quark-win-x64-0.5.7.zip fkdCLLzHOzYYmnLmQBgdUBtSUBToSbhxi/A/ZqxlBdzMSOsjoyHg09zF7v3rfqwuqRwIIR4VIQkWID5PBIroQg==
Quark-linux-amd64-0.5.7.deb rRISHJ1uamUUHJjv7pwSltINRNRYbfq9Vhi5Ng5dmvJmUnJlbFU35ZXqqvpFFlayzCRWl7ck4sBmhLKpawHYug==
Quark-linux-x64-0.5.7.tar.gz MDGqKOEE4JpQNq5HrLjNAbyEA8hg1X7AJP285YjmMdfnXk1VpGWcNxfp3i3GrF5uY8EfExyjsjV/S3Djaf+dlw==
Quark-linux-x86_64-0.5.7.AppImage rKj+j+Fp2PxaTJY7fkIzJhUwn76S6rZN6UW7T5VQ28mLFFWfyq+BdOPSfH8iuPXqwwa+lrcJnDnMXikos456Jg==
Quark-mac-0.5.7.zip ppnbnfM8p2v40LVvJ/V8+rL7la4/WZzUwOF1jil9WeWEwRl7anQUzttxNhzsgt6ILGCtYCEsnT9plSMzpksPdw==
Quark-mac-0.5.7.dmg t58Ujy3daGreQfK3OHcAqjF1iR90tMfhHjKO06xYwr45MCTejF01ErGsE5YpmQEkDmN3g2A6bj+uxv3nlqfpIw==

Quark 0.5.6 - July 22, 2019

Minor Changes:
  • Added: Telemetry
  • Added: Telemetry settings and privacy settings
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-win-0.5.6.exe +YmOQn6iJ37A9jqqigxuhuk34JxNArOjHIE74AhNCnW6AYziXbfA8dOji6/MO4+3IdCfC/z6m993Fe3qIg11fw==
Quark-win-x64-0.5.6.msi NQjBk82fgugjUQ4CYter3pcBHo3GReUBjy1o5pWxbEy9XOqX6hrdZazv50jTQXgqWaejnJYY3AiSNEeGdEmJjg==
Quark-win-x64-0.5.6.zip M/xuRnnLXpC0o6oTzp4NeZUdAQnlSDFJp3rnasuMRGn6C0zBny8zjVnf0A4bqxtIP4Nu9VoS4GLHrc0/NJBQSA==
Quark-linux-amd64-0.5.6.deb nIAlR6B2XzTYDkSuHQBXhBGnviEAUWYJ/lAHK9DwG7A1Bp2T1sHvFMVpIbWMCSuq2w3TV6gtdhSoYsq4pmoVJQ==
Quark-linux-x64-0.5.6.tar.gz H/75KXjbAFSkMq9F2suW1Jmi4hgXL9vVdEy+gWFPlzBkiicYEHuo8FUtmyrInWaffjX1qIWfHIKXHd3v47Lnog==
Quark-linux-x86_64-0.5.6.AppImage nOHDXj13QH5puBUxLvN7xWnn1iCQKTndnB+UKfw9AG2AgRUXn6Ui6h3Kv6xpvX9PZzKx+Kc9f3GY2sZ1xWE6sA==
Quark-mac-0.5.6.zip zbqTVJb8PCgD5pIrlIwHzMVahkFzqEUEQdK462wvY0sYcucmBiXZJ3pc3OJcA3m4D44uS/MrA5Lh91gTi7K13w==
Quark-mac-0.5.6.dmg /Xo6McamqdjKNLc5MKAcv71P9pPkn3Fy4NViizby1a4AZOYnhu1mh1Mms5sQswa7gs0AeyFXyd19wnBNQM1ROA==

Quark 0.5.5 - July 19, 2019

πŸŽ‰ Features:
  • Added MacOS builds (.dmg and .zip).
🐞 Bug Fixes:
  • πŸš‘ Fixed: commands were getting removed from quickView on opening files.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-win-0.5.5.exe Ric6rDRHsARGxga3godhIprA7Vd4Ehvl6meOlE11pByOTTtxkZ0bKSECNbWy5PK7/9UZw64v3LVHEOP0Lt4uTQ==
Quark-win-x64-0.5.5.msi cMiGfTsYX9npLQmVedYHpJfxdceKFk6onABv2PcdIoVOWRerdSi9+gKqVxE1hzmMkE9EIP8yPiMrhSSDLR8OrQ==
Quark-win-x64-0.5.5.zip 49YjtyBFkvD851mbinuXc9lGT5tcVcUjkU4bTxAgaVouGrP+V9g3UOVtD3Z90vAmnAPVh18TkWc9EPglD3LgiA==
Quark-linux-amd64-0.5.5.deb wZjjapAvLrIxZK6tLIx2P/YrvdvtFSiPBxc/GsMpArATzRUU+qgY80EGzP8e5quxXDtrmNWwaQiT9yPLRo1Qmw==
Quark-linux-x64-0.5.5.tar.gz 0sIKo4VjmXW0vhoBs6SGxNlSj+7maZKDq/X5XsnD2GMvAiwGiJ8ZY/UZ2vOjoMqpAoygGhU/dNyM2ImxWhQrrQ==
Quark-linux-x86_64-0.5.5.AppImage mhccL5WtasQ5kqDnoJqT6/MkamaPBw9QI+jxpCyBeYwQDbgtG9rKGmK8jE85j+S1sUPItLOHhvUjYK1H86dBXQ==
Quark-mac-0.5.5.zip 2T3kbgp9Ru7aUCbgPtVIpBVZCecopl2gcmcjOTcWV+1WwQCzMPaSh3lyySPiRm06CTl4wGQAiMwv3bPUXPQeuA==
Quark-mac-0.5.5.dmg JNdVlXpO1DF5B6UAconyLMplZq9cpPk0ncnlLBR3OqcHXC+DGNgckcZg3izjWAImQOVvGK5MHOaOoOPyAIEtdw==

Quark 0.5.4 - July 14, 2019

This version was never released in the stable channel because the insiders release was found to have major bugs.

🐞 Bug Fixes:
  • Commands were getting removed from quick view on opening editor.

See SHA-512 Hashes

File Hash
Quark-win-0.5.4.exe Ck12bG/lByxG4AOI+ShlilDrPXCBHqAUpXLwrVRenJRMxNgxgrabcTslUKbu0k21r/CsnKPwwDhAye7j4f7GNQ==
Quark-win-x64-0.5.4.msi JeCGo5x8pzeCIVahRqqbHiP/E2ZCPbfXKZdsNYFX5kn/ohYhDqjHARyTDQk6rQ608hKl1s9bjCj5rcb9o/2tBQ==
Quark-win-x64-0.5.4.zip Rnt/4Wb4YNZu9GJXEKXPak+Jb0SqkW8NLLbB/jIa+ugMENegsG8808zbDe4ZqxkMM9jphIn3J2IYoE81oYu9bQ==
Quark-linux-amd64-0.5.4.deb xSjOJpJS4/LX6mqiiuXJp4rByuKx2RnqwkapDyBbAwCPfBj+271Z9M9HFVxRIFkBBeMc6VT5EXzTzLhFIx2P2Q==
Quark-linux-x64-0.5.4.tar.gz nfrpO6Wsudn1MTVMH0f1kmv4phd3O4l8R81jl2F412sO3VNxNI+J8htZ3/m56bdeu5E7oKh6Xe2zHBCEyhxvoQ==
Quark-linux-x86_64-0.5.4.AppImage 0f+xFislEPKStCTnMfVXJCgax1vOW30+JQLUR8COMJVXo07Pnd/Ug4HfZzIIerOycat4XVWNlaVY/CIaUbc/dQ==

Quark 0.5.3 - July 11, 2019

This version was never released in the stable channel because the insiders release was found to have major bugs.

🐞 Bug Fixes:
  • Removed auto-launcher. Was not respecting user input.

See SHA-512 Hashes

File Hash
Quark-win-0.5.3.exe 1xApGQ+0PvxYthjSv8lqRa1820ogfshnHILZIYcbWiLTIujuiuyMRsPkuJCYWuOo8a7CDK3sqE/4VIbPsgnqvA==
Quark-win-x64-0.5.3.msi wXJzxOXMjwSadUOZ7giAhkDt+ZhWbrm4zV7GkbxSDzUPRJZS/ft9BxYuCWPwstTMkegYOINDvI45vBkgly7Org==
Quark-win-x64-0.5.3.zip MzjJB27EEEXn4ZF9oVOqNlH1Q+FoMRsbC6rKWaqxZp88/FUMryn59uoPO0Z25YQ8Hp92CE6PeY59sA0WjTlpEQ==
Quark-linux-amd64-0.5.3.deb Bpwus7qxFUKNef0wy5H0/OdnaFN9pbyqX/8SyQ0WIdbpo8rBry8QDVW1WlXdyOx2546AE8GESCDtB9bIKMZgKg==
Quark-linux-x64-0.5.3.tar.gz xHI7tNvyLucDzWkuDzS5IRtvfSYa/5v36yxacWCjJFzzCBlgkG/PcrBax7cd8xEffV7CNdJZEZe9i6yPWaqizQ==
Quark-linux-x86_64-0.5.3.AppImage Arf+73qMqTyFG3CS0zSgfo0zTWKOW5wmQZPbRaIgrFEkgYSZCkqezi4sgM8oQLqSiPJiLzhwsLEFvoOSNBEmdA==
Quark-mac-0.5.3.zip TgdRZiDETA9GXDBfAJbuMPcVhBfCOHq/Y/8TOKcH57CgAd8NRqltIeB65MwSD1zq1eXHkFInBPN//rGDQodxjQ==
Quark-mac-0.5.3.dmg 3924DYtSsQAtTZ5Va8ISa+XiZo9mclgkCzBP0owS9rWo2554dsbXvKRP3weIsq6ZoEjOtO1euOhHZqj/eQuUYg==

Quark 0.5.2 - July 11, 2019

Minor Changes:
  • Mainly dependency updates.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-win-0.5.2.exe 8Ty6uDG3jfQXn3BBmh6/mJcVDGWgrZ9qGoGIj8W1o3Heezn4g1dIKE5PiAaYFdzm7KCvdC+k8NK+5FkudKrG7g==
Quark-win-x64-0.5.2.msi C+g85w2fCdqAxBQ/BW3BdNYzuzRSicnPPQ+dCjhxR+EEXla+7i/GtTM4KUg9ommFFCkl7Qk30QGXFzgM/S8Kjw==
Quark-win-x64-0.5.2.zip 1oPGWDU547RZuFx4Yz4V6RTE61QvYw12JgVX2+q4QFPrzD5jukL5Mv+MFTaeugDuWxtkbKb5fVa5ByioMk0vRg==
Quark-linux-amd64-0.5.2.deb QgjM2tri9MWbjlbTlRuV4h5a8u/eR7nNmQV3O+kNjofT1sktUw9X74xCn8qeSoEpZRmCp3MMOCNeOR4SIIWHxw==
Quark-linux-x64-0.5.2.tar.gz A6H7Yl4yiOP3eBmVwH4YSCzTSYhZoYcv34H3M/FnOWot/eVolBJsFtgK1kwbflBj49jgEXIez1ArASiaAAF2yA==
Quark-linux-x86_64-0.5.2.AppImage eVmKffTXNsEYivBUrBHT2SzNwW0DjDXIEfQ/IlaNtN2whI3gu25FzJIAbau4scs7FBRzDUNirndmleCcDK3hcQ==

Quark 0.5.1 - July 8, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed: Editor executing paste command twice.
  • πŸš‘ Fixed: command not getting removed from command Palette on dispose issue.
πŸ’” Breaking:
  • Removed: keyBindings namespace from global quark object.
πŸŽ‰ Features:
  • Added: addKeybindingCondition function in command namespace

See SHA-512 Hashes

File Hash
Quark-win-0.5.1.exe 8D3K03Se11NP4FqcO1dun975PrKt+ogUSm/B+xnOgm4C6CPHrDtdV6ltbIhhlIOgCZc0CvFSa7IA7OpdGeYJAQ==
Quark-win-x64-0.5.1.msi GkvzmnJD9+sVmmIMYSN0DERXKKWqM0/GU75yvf1WdW062W5zxSDWvKdtKAGMiQdrter0crsbRhhVlOPF5zT+fg==
Quark-win-x64-0.5.1.zip 0aRXGyRW2JATbbkqFA/9A7pQXEUua8yoEv1U+85UgMl9aoRNbb9uo1Or9FAtE5inz3di8hOOvXNgNR+hrTWs8w==
Quark-linux-amd64-0.5.1.deb 9NZDINUko98fAS6o1CRDEzkAmUa+5Aknb+hXZNjLZZhZRNLDs7oqgUlLHiy4I0iZNXbdE1eibfSrOT7LFPQTZg==
Quark-linux-x64-0.5.1.tar.gz QkGXr7SG1XlDSudS7yzQARwDPI4lpJvpYYYDX5wiWDq9bxSZI/JHGzMPhVFT5VsDRito+vcuTymMRB97PIehpw==
Quark-linux-x86_64-0.5.1.AppImage FwSC78EFIokphq8NxOIUOTOeErMSu3MfCsQIPOOMsJlHEldQugZGgPhRqKoEQUyZ5wS5SNW0R92lzAMinR9jbg==

Quark 0.5.0 - July 3, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed: Context menu not updating on language change.
  • πŸš‘ Fixed: Keybindings not getting removed when associated command is disposed.
  • πŸš‘ Fixed: Keybindings triggers random actions inside monaco-editor issue.
  • πŸš‘ Fixed: ASAR packager issue. (cannot pack single file)
Other changes:
  • New files created are automatically opened in the editor.
  • Editor is now automatically focused when file is opened.
  • Added select-next and select-previous tabs bindings.
πŸ’” Breaking:
  • Removed: createVueWebComponent method from quark.util object.

See SHA-512 Hashes

File Hash
Quark-win-0.5.0.exe RTxwtMUgpNOztN4wtrJgwcLNzwn5nLXjM7J6Fiqrg90Wrqj/q89D6Sv5WN+Zq5+woiEE8+F5u/VFl2b+bH1xew==
Quark-win-x64-0.5.0.msi nyfZICtVjytS4bs6FL4kYTBBrgn5suW2rUghnYLhgicFTmPHSx3SNJVB2wRfa6XBeD6A8IVAwY7h836Mq8fiJw==
Quark-win-x64-0.5.0.zip 0GS+9/D/92uu0uud8FJ5jy0ueEyV0sjX5el8UMarXn4KObmQydvJc4p2J9fANDknOQBHq6JxJNeL7jVp8PrbJA==
Quark-linux-amd64-0.5.0.deb otN1TCzZk8Noy5h8/HkuQ2Bv4hruXwRruNjURVDaH8HdVh2xFJEAhrbWXtuqjdio0lD+0m+XYYiHVqaY+bQ4qw==
Quark-linux-x64-0.5.0.tar.gz F+evYuu7oXSr+TdxpnW/GFkaZgvL9+Fe4eqh/YhBrVho56GnLkmiZ+fC7DnOlsZj3TQYm7Y+6PMa1D5xzgM80Q==
Quark-linux-x86_64-0.5.0.AppImage 9S3dKLlpN4pSxwAVZq78vfxUcFDBGqFcXp4cf3f4dlA13Ctk99Fo/oufGLUtqRKfgb0KCOUig1X96MU1uREkvw==

Release Notes

Version: Quark-v0.4.x

Quark 0.4.8 - June 28, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed asar packager build failing error.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-win-0.4.8.exe 1mIU/NGZpwN3g2v/R7OYrKNA5scRc2MJ0xOpbr+EwO4Bzz0s0IDRgHJ1cUuECSFQvuA2EIfEELg9tQ26otDc5A==
Quark-win-x64-0.4.8.msi /6nbclOnu+6tOJpnzGtcceyTZgJ3a6b9pOgFFiU31erUPrkFFZmiOStnO3u/v/GAWyKzQ42xOfOvpSqoAG9l+g==
Quark-win-x64-0.4.8.zip 3CUtDPKcnuCbHGoslkhxmuudH9eC6xqY9OgZ3AIhMiFlrprUH8tIa4m/LiGfDUwx35ts0wfurHN9FpmtfVnm6A==
Quark-linux-amd64-0.4.8.deb fe0msGadzBhN1QgYXaGRd8YoaLdwY/3qvcIvGzE7Z37PJB7B+4suHZe2pz8gwacbnTDAJDqi9g3P7zcV1zTzrg==
Quark-linux-x64-0.4.8.tar.gz SD/xmge3WWlgY1B8uaWnv7B8YGImjxnZXDv6/n5B2I1pTV5c0/d3vjwNGB+iWJJJSaUGoi8WqOxf2Sn87eWrNQ==
Quark-linux-x86_64-0.4.8.AppImage TTtZB1j6tYjmby5nvSL03I3iM6GQF8aYfnubyQAOZqYUSMiEON9XHjdLzNmDyuPxFNRMP4ZvFogVu/XGp2uAtg==

Quark 0.4.7 - June 27, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed file change on open issue. (File used to change just by opening and viewing contents).
  • πŸš‘ Fixed "AppMainProcessData" data-structure.

See SHA-512 Hashes

File Hash
Quark-win-0.4.7.exe yXJwigCCPdltZ0d5+1BsQH8YSOlxYsyQSVdLTnYNvcEPcOY/kurzxXEQAJ7FeArHCDg2RoJEU1ExFANyKc/Z6g==
Quark-win-x64-0.4.7.msi dxuhlHgS3jaVjmZrclm1sRrz0oS+tZvDqTkZjIxJJL6CLXeOugPaD4WBuMbROHYbVUZqwz/S14bYwLSDX91a2Q==
Quark-win-x64-0.4.7.zip iCQ/hSXbPmxEz7GZGzk+mHJk47YPFenCiHYd4LO09IyV66v6oTqFHwlPid1Vg3+o4atr8SymDPD0kP5nhL4TUg==
Quark-linux-amd64-0.4.7.deb wxAj2StF4dcvImOAgQwcSz38T7hbVagtjIeo97GOf7/QWPu6/79VI7zCYxJxSW4U101UuZVPIcnxs8ruR1rw7w==
Quark-linux-x64-0.4.7.tar.gz DpiurAnrJA/AaJIyq3jfAP7/ISHWRMQ7Syehv4CEy8JKXkWSP63jtOehvsKhnJUxFWJzeAiodqijXJkbNm+ULA==
Quark-linux-x86_64-0.4.7.AppImage OaSOn6iA5aoklOaPUtXWNytvm6pb5unCpcWnl0oMzaSTdKKiXRS2TucLnqPlKsmHKbF17Dj3bOxiZ0jjCx46gQ==

Quark 0.4.6 - June 25, 2019

πŸŽ‰ Features:
  • Added github releases.

See SHA-512 Hashes

File Hash
Quark-win-0.4.6.exe wotQeWexFaoq6FRsoeWZpLxIcfXYxu3hQNzkSGTJg1Ljop1Sd+vMGEHY/FOQA1B2SYmEU7R0/SQ9ZGUoJXwqGw==
Quark-win-x64-0.4.6.msi gPK246NiXOvkm4ZWIU6231peWdTaC/LVE2Om/4PTEVLWu+5SdVdYUY6kZsTjV3m6yQZVbD1Sa0TjQDUcIVOJbA==
Quark-win-x64-0.4.6.zip nqwzh7+ML09o/4oiQXHAkSW9trcUl3jsy+lZD4KYTzYhJJhPN++xepzOq92kaGGUEmL6fdJMRagI2o8ZXngNow==
Quark-linux-amd64-0.4.6.deb d2PKDExj4FoyEQEd0MH7onOehke605D6CvgTL2lVex6mo0WS2Job0cJeoI6TTbCiSWxvaNBtX5Y8XuWxlHcktA==
Quark-linux-x64-0.4.6.tar.gz VJOznWdi3saQOh7+lql6ShBnkMVuvCZsz94kNTePH2epsoYyMyGjFr6brzPSUQ4AzcClVwOKBWF7X/tD+Ip75w==
Quark-linux-x86_64-0.4.6.AppImage O1QeEgEsPw0hmUxPrjXPyXAkYLsvb6eFPp2EHZjbm4xfg/PDc/Gxi7v5HUtCpD6LGxmeQcSZFGxfnqRLQ9eN/w==

Quark 0.4.5 - June 25, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed 'leaveAppRunningOnWindowClose' and 'launchAppOnLogin' settings bug. (Changing settings did not changed behaviour).

See SHA-512 Hashes

File Hash
Quark-win-0.4.5.exe SNJssazm4+bN8JspF4+pQfhJHbjEuP1TqdmSkSpwEfUWZEBRyP/1A+M0Beib6X4j4zbMxkgW9VRr4cMscEPxWg==
Quark-win-x64-0.4.5.msi 7+f8DMpp21DWo7KGSrvsbkJrZKvEPyMlrBcaGO4aosiVxjSI2O/ZCOhxaPhrL0rnkHNSADcen5OCc0UzSLrjGg==
Quark-win-x64-0.4.5.zip wIswcvZeoXnJTPBfums5LxxVb4DMYsy3FhrEvBe+pbGSNsY6wx44S+FOgyQcLPdXraGZ9Ky+5k1I/5YN+KBmHg==
Quark-linux-amd64-0.4.5.deb lbDMDyWM5t13uwS2FaK8o+BCAx+xPgiLXJpM4vsyi7ZJ7RQfHRkrUUwXBHBgpNCN5Ig0AzFCrbcabG9m/BbNPw==
Quark-linux-x64-0.4.5.tar.gz /dyYefaBr8jInItJ7GW7lGnqTen1myVgX9Ot6iaOo36yHfwVL9+IhwuN0mAYmDr/G1wXDm5A34kcEt603/PG9A==
Quark-linux-x86_64-0.4.5.AppImage NyClWqcglvjWOhMNmdvUL4dYvhFkb1LvcGPHHtH55R/ugyPn17SdTy3lkGRDPMKr0wRBG/t0t0+rJNJSz43PJQ==

Quark 0.4.4 - June 24, 2019

🐞 Bug Fixes:
  • Auto updates not working for insiders release. (Change in settings key from 'πŸŽ‰ Features' to 'general' caused the bug.)

See SHA-512 Hashes

File Hash
Quark-win-0.4.4.exe s0tHUTsQANK9SG0HsqvUL/iWbbs0exxugvTQSIUZIlx+ytO4KetCrMEdGc7VR35OqKWDDc9X+pa+l5muSk+73Q==
Quark-win-x64-0.4.4.msi xHP5YCNGef9VsqRKCWy5EkzDUQEhWbgSIqAwGhERv8lv3wt5R8fkq9ItqkX4i7JRkIxadUDHh6dLeC9ujw4s3w==
Quark-win-x64-0.4.4.zip dUfoTskuEU+exqA5KVP0xLDucZpkdb+FEHPO5kF020AV3/L+1KBnJuBHEhF8cYlQG+3kkAvPEjFaFjRGLM6nUw==
Quark-linux-amd64-0.4.4.deb LELdjwjSbr41gmF60vbqyDVSoHXbr7RtP4mTcdyC65jNME40WpoczQnCcwVap1g2auvaq4xllUPKja0OarJOYA==
Quark-linux-x64-0.4.4.tar.gz 2Gu0OkpDHtrhUpoj4+Y++mRIXYpCKt637BII/a7vNwDHOOGVutRz03OKOdx1NUjEaqQtRZ0lyLhfXUrqFhNQKw==
Quark-linux-x86_64-0.4.4.AppImage 2mFmT5TFeSn0+Clj53VXQVJmBDZ8urnSvZhP8riTnch1qcuF6eRoLM4ZI931iohW/nuVHulD7gR9NEMDppwGnA==

Quark 0.4.3 - (Release skipped)

This version was never released in the stable channel because the insiders release was found to have major bugs.

Quark 0.4.2 - (Release skipped)

This version was never released in the stable channel because the insiders release was found to have major bugs.

Quark 0.4.1 - June 22, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed tray icon missing error.
  • πŸš‘ Fixed third-party-notice missing error.

See SHA-512 Hashes

File Hash
Quark-win-0.4.1.exe 2niu8buUhDdrUguNubouOwhT/QA3hx3G4q53p7jFh+JuxFUZZwuTOlb3GrrgNhITrNBBTtgTUaOTssHKYporXQ==
Quark-win-x64-0.4.1.msi fubBqivZ66kIYyjGeQ60iKEKCZghPOXbBOUA5GxB4Doa7zPnR8kWqy8ADtyJQIha4BaXv6l5FHgVucJzJcyplQ==
Quark-win-x64-0.4.1.zip KFma/e7bcC3F2eiIwBO+QnnX0Mk5svJ1PdXGHqIufwwYR/hJaNnWjPCe7VimkT8ZcmoIem8TjGaoCZfVZkmsvw==
Quark-linux-amd64-0.4.1.deb eUNf+sp3QKD5D3Ixb058wvfD32x+0rRkXz+bNq6gRjgGY4OgXQ/FDlfG4VhDEi037EohtwZujGUmzzvOSxAbsA==
Quark-linux-x64-0.4.1.tar.gz jZwkDMVaVHGrs89eub0FKCOh6FfOmWREpbssHOVDsIabnMxrinFII2Fpv9U3xzVod0QcV7vnEYUwJVtmsbSfQQ==
Quark-linux-x86_64-0.4.1.AppImage qkUZX2TbFgHcsTKUfFsIb2gZ1JrVzrrbfGqpaKYzokHOxO/QZI0Fv/f92HUr3CfV/0hJ5TmFNLPFOdJt2Szd4w==

Quark 0.4.0 - (Release skipped)

This version was never released in the stable channel because the insiders release was found to have major bugs.


Release Notes

Version: Quark-v0.3.x

Quark 0.3.9 - June 17, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed drag not working issue. (from dependency angular-split).

See SHA-512 Hashes

File Hash
Quark-win-0.3.9.exe wMon85XEZhfbkMnzG74uqXe9OLQhgpZ+Tyj5ibdwIk2ijnT+xAAuFcl3ThcN0pupSc/9mzastNeX8njd0hk2Fw==
Quark-win-x64-0.3.9.msi Ee//p06wvQ7XDUV69YGObEehI76WaTJ6jIuwuZ7Y0bmUPQxKr8CXV3d0awzjAx/5V9m54xQI5uVIuA/utnQ4pg==
Quark-win-x64-0.3.9.zip k7uCeKDmFUn8BInMSxvQl8TbyT7vpYolfUb7Gtz/Ho2Lrdr6iUplMDy0H9Hd7y8aOQ+4ZlVeIacD9oHQC82ewg==
Quark-linux-amd64-0.3.9.deb wmAkRHkxBTnq6/gzuMCABJn4Ckfk+wkkSxkc/TANRS7Djx0tVBNKKiSjRyq+Shsp4+il0zNyIY2p1Oa5s0iPLA==
Quark-linux-x64-0.3.9.tar.gz GJn8EQ30M9HCBsQ+xfAESKDeLkw2iAp6KE4jeR09z+eBOpn0NiVMwT9RVw1PpnpuhbCEnDaE6l5fVNBmAkndPA==
Quark-linux-x86_64-0.3.9.AppImage vZVPk6fpehlNr2+xoeIPlSxNAmlicEFdcCM43oqjDV9beZkNA9EvGmF32gYZoC8VL17i2HFlj+xKEJbQBFK0hg==

Quark 0.3.8 - (Release skipped)

This version was never released in the stable channel because the insiders release was found to have major bugs.

Quark 0.3.7 - June 15, 2019

πŸŽ‰ Features
  • Added clipboard readHTML and writeHTML functions.
Other changes
  • ⬆️ Updated test scripts.
  • ⬆️ Updated default runtime theme.

See SHA-512 Hashes

File Hash
Quark-win-0.3.7.exe F98SjmtcU5/EoZMwo8Y6InrMu4yHwxWfEZjXXClbv/UOJ/2c0R+P/7Y184Xc7sNm8I/G7bloQhTtQdkIJcH3hw==
Quark-win-x64-0.3.7.msi HsEo9+mkM5xuxHlzW9Er3/JWP/zySpQr84ocBAuajQwqnHZwtKeexXWKrXIMVt/k6FeGnVbKDwu5YonSu93/6w==
Quark-win-x64-0.3.7.zip emloNBNmGHUAEGpDxQH89+kzqUIjuVskO1CeVxRgqIAsj+G+Rc0LuDCBDuzw58Q7qaayBNyPQRuoa/dCDDwNYA==
Quark-linux-amd64-0.3.7.deb JNKs41dFIz/tXRbSfj/dKaoB1djQ8rD95vjmA1n3UNMo/EjZHC/2UqphXGGE/u/WOTagaPhrKEwtc/QeQvNe5Q==
Quark-linux-x64-0.3.7.tar.gz tGJo1BTkenMuBmzBW/CEB1KbUORuCl7Sy8PCJxD65+1PUJRWPJ9hBiAEH6IRKcDS4kS/esh5nGZS7GC/fnaizw==
Quark-linux-x86_64-0.3.7.AppImage GPlXk4aIllLolWVT3IeAeBnBn5J5msmq5BdiVVu8tD6w2VhtfmoGgAtHeqLuRM2n9AFgzFKROyVa/IkwxL2XmA==

Quark 0.3.6 - June 15, 2019

πŸŽ‰ Features

See SHA-512 Hashes

File Hash
Quark-win-0.3.6.exe ZjUq0IO4a2NqrzR4Mt2DwKPBKk1s7RLY58lzWpNFTwhFEbdxRiaGz8rAY8be529rsUTRLErNTvFNZurHa9twPw==
Quark-win-x64-0.3.6.msi 01fCRYsbWgsGP4wyVLueKzTy3iLAbu2rE5AvV4/XKzFBlHh1PAY29DuSdUw76pQqitwTBdZtNXUMGGfe3REnBA==
Quark-win-x64-0.3.6.zip ghaW7jutFcv17Ig4PU0a9Y+10ft9jtEJZ433LeKuBwSacMJdPMFHWa7LsdaTrgAHFK8Yg/AEvou6xc9cg1MFXg==
Quark-linux-amd64-0.3.6.deb 5+HQKnXI7S8HQJqJ66EiHCxXjGS6plmqxZd1wnl53/ZyUabAS1iBX/2FPBVnZlmVo3Wix+bOqQQ7xiATNQklDw==
Quark-linux-x64-0.3.6.tar.gz vqEE7mFQAE/QsFFJM9Hkytpu+Sfu9QbpOc7h/2IwJFBETndBuK3f4/MSgyF+fopa0cIMzkIEe+YO0d6PBGFHtA==
Quark-linux-x86_64-0.3.6.AppImage SxPYpFfcvRKQQquCUkmonXYvaXIo0e0yOMp4DnVCfap01M6P52bTS7wh76QjmUvvo+3ntNohgt2XC8zMpZUreg==

Quark 0.3.5 - June 15, 2019

πŸŽ‰ Features
  • Removed window on-did-load handle. Window is now shown open by default.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-win-0.3.5.exe Ds1dGug/xB+Gtl7W9TVFvznVzMynoUHI+bNHf+Ovv/nBwi3fziwWph4M3IT1tTSXDQv1xwr+G5RlITcnSW37vg==
Quark-win-x64-0.3.5.msi PIo2yBmt02CueCbZDrC3L62mJO2gppB6qibFn+SCd7a2AbpzhsF1EDlHVZtWaV/FalSxAFT0Y7f4wTwa0C8AKg==
Quark-win-x64-0.3.5.zip u/nTDHwlq6YNuitD+ivCYdcFoxoK7lsqIhSaCjUIH8+9agvAwY+6/N1aO8HqBNB+VcnwcwlGbz+yb8RJJB6imw==
Quark-linux-amd64-0.3.5.deb hhL8gwdOvObz3Avn5ZOblFtkvE+cfjL5ovMwWmTc6AAJRY80MXzQfl55M+C+7QMReQN5mMRzC6vCZ8LVBN/u1Q==
Quark-linux-x64-0.3.5.tar.gz Em03ZRGEi4XtAnR4tjjWAYEl5B2l+67/oMgUupWI0DSkRvlMaQLRKdbvWErxUqZW4v31vFM6A69AlcUfUg27DQ==
Quark-linux-x86_64-0.3.5.AppImage V8RgiSyDuIhFThmuNGn6d+SldmoLRZHl2eY8bj0qG1tZ5g0oI5M80cOkrtG+4bKWeZAt+Unz0zjwMM1qmaRiMw==

Quark 0.3.4 - June 14, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed allow downgrade bug.

See SHA-512 Hashes

File Hash
Quark-win-0.3.4.exe xc84bp1QbLzq/DT3grUPbw971jEe51xH0lzzloYmmCg08Ihmw3FV+ScKy9rtk2GlAXJCM1A8Ax5OJiBwa4klbA==
Quark-win-x64-0.3.4.msi nDLb+hWCYvz4CIjTkKHwFDJEGSs6J6N9Lw+nJR2CitrjoJ+djlQzVVrJB3hvYHTXZXzWds9x1dEjApMgKsgHgA==
Quark-win-x64-0.3.4.zip AU9qo8igLmiqo5Q4j/qDsgFVgiqfm8Eb5K0FViwRk8QCULcc3wdltYlVdnke9zEXOvvbTTuOB939/9w/AVaWSA==
Quark-linux-amd64-0.3.4.deb pj/u7vgncBZKPuBEK4OCkM/RDObnG2IddQ8Hxk04Xz/yUP/yE1FktrqkIA5+HhbGaKESzsM0eqOe2c2jTW1CoA==
Quark-linux-x64-0.3.4.tar.gz rPXN/EITZRgz7QdkmIG7FA4ySI/oYY/Usd8oShq71D/ze10SyHMBRGbmUyoGO3yv7NGWDZGNRLfeeKcOCPUMtw==
Quark-linux-x86_64-0.3.4.AppImage z8k4zQnTu9L8rzi9ZY9Ihv1aiup9EUop0rdpUWGoNHK8cdvtkSuwWfNFNCRvtFjqfzrRz51EMy1mCiGyfzQa6Q==

Quark 0.3.3 - June 14, 2019

Other changes
  • Partially added crash reporter.
  • Dependency updates.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-win-0.3.3.exe YjYTFz/GsmxAfJJJ8MQ5uEPQ7NAY+Hoc96xWtXsfwzUuTkxxMy5bbSPepCI0EnCWC9la4jyak9ONESnIGT6Mjg==
Quark-win-x64-0.3.3.msi gJltS4l2PVfOWOSoYXF/pafOJbcic9J3hrtIwiSjBett7NQTzvM3S2Ex3XWdv+JXxK6Bf4KAy40DdQ2uv5lwDg==
Quark-win-x64-0.3.3.zip aQbh2rEtx5bosqOLxLCozengwMfebTqDTz0l+sifPmkKcr/7uW6HoTOdwQPEAqzlEyaAeXhxoAwiAMonuzfukg==
Quark-linux-amd64-0.3.3.deb kXxRp3cX3KD7VFCeGf9TbWDHg4uEZJXzJ74DhJQZGohp1is4lsAzmJ2zb39f4c+Hc++qR4xp4kxWzvhLQraJAQ==
Quark-linux-x64-0.3.3.tar.gz 4ubVJJyN3mM1aA6Z0JTTDVV7GZWMgklALWuyKPcYiC9bbrB050NpFDjyxa2dKN5qdfdqZBEfOimnx3Eah0CAEg==
Quark-linux-x86_64-0.3.3.AppImage 8fo3i7HG7oIpeyR1fYiGEqkrNwGbWXnmlaPuuGr2E693H9EuL9cXluNGO38T7fvGvpFDpuLGvLFLiyZARfwKZA==

Quark 0.3.2 - June 14, 2019

Other changes
  • removed quit and install dialog on auto-update.
πŸŽ‰ Features
  • added auto-update settings selector in view.

See SHA-512 Hashes

File Hash
Quark-win-0.3.2.exe yevyjvEynY+Q61RqkGk64Kj1fTGpofZLgUmUn68oULBqhtHl6FmlCpKw1CqUAL1MUP7S9vKhCbIgKGrQiIvG9A==
Quark-win-x64-0.3.2.msi RLjYXB68MmZTD+t5psKshd2l5Q6vaNiPfMdC5gI+aKWSBCIIpp4Ms2wOdsKPaDgCAoehApWs+Q6sFzrgN2eIIA==
Quark-win-x64-0.3.2.zip /ZNt3wQXVb/JYwwujCIxAH6YOu4r0SB6TSnUEJ0L+r6Lg2oo6o4/73fqrdxdRtDsm0bhO0ULFl9CuMYEMRi0tg==
Quark-linux-amd64-0.3.2.deb 9psEjMTiJ3Z2Vpd8wZ+5ckSzVi7verPv3zqXcpekujRmMXof9EezWDiEQ0lzyOcXTGymRp2YnvGv6WZvMa400g==
Quark-linux-x64-0.3.2.tar.gz 40IKvJ/T88UlpE5V2JMCenMaeeYNoAaMQIHonlCZs3kXBho7ei8AO529Q+ecJ88yk8V70wBgGdVnb5xwi/ySyw==
Quark-linux-x86_64-0.3.2.AppImage tZ9KFQzHH3SOUVPrqLHdJ5v6Qb52f3w6RiW1cnAaM83aQZdTGxIv/bwJ8NrWuaMri4ygfAtjcVpZk4XHLt8JEA==

Quark 0.3.1 - June 14, 2019

Other changes
  • Testing auto-updates for cloud-releaes.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-win-0.3.1.exe HF3CEerww8IWFoF2bZtFND6HyvM+5M89TVVHsYZSDJIwfBdMosBQFm4GZNMVWUguzj8J3nQtXIEtWPYR0ULqfA==
Quark-win-x64-0.3.1.msi YcFMo1Odso4t0g21xKW5W+hO6fYblTpGOOc7C5HEErLB1frfcPf7KXVVgb/4BlCOanbQMyalH35HGEY1jl+bcA==
Quark-win-x64-0.3.1.zip p2DXyQhsP8cjIShoyYfM4yEZ8GQrWrbtNQgYBjO04N91Ea5l6veMNDMv5rkENTt17t9wmxDBxoT/46bPIsQf5w==
Quark-linux-amd64-0.3.1.deb FyhS8nCQ7xg8uXSaAlmF6i4b9Yf8hewZcl89WpRUyE8/2VPWAs5M7bAfcVzCmHIZcRgaH7Pf2JAdO0itzUpzfg==
Quark-linux-x64-0.3.1.tar.gz E4OTzNZ9RYX/XF8S6h9uqPQ9xNanT9GxB4SSP+Cb78AlylfoSkXBF2hW5qBAoteLOl7ZLyBBp76QOwai6t2+qA==
Quark-linux-x86_64-0.3.1.AppImage yWC2Rf/2O1V7S2Bwat4PMrsDtWyfDjX52ZfuT7gr+2r9j4h/4Ui4R9bgz6I3lPl6mXrbnNKafAVUUVwP+EDCsw==

Quark 0.3.0 - June 14, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed slow devtools open and reload issue.
Other changes
  • added branch master-all.
  • added cloudflare CDN in front of release channel.
  • First fully cloud-built release. πŸ’ƒ πŸ’ƒ
πŸ’” Breaking:
  • old auto-updates will stop working.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-win-0.3.0.exe 5bKFlr/zI7aDPDohxZHMKodyoQlHt/99C1XTX7P/zo6+8PPWpNvUteJVes8o/RfwYbTGTmFYe9+GAN06Rvt5/w==
Quark-win-x64-0.3.0.msi T35dy6wqOtQJ8xpuIlTGBeG6vWgVHKPxw82Umm7Nr9OXUj5X6Q04GP3Qv9qC+11m8Cuj28PoivKuZv0oB0qf1Q==
Quark-win-x64-0.3.0.zip Rxilq7PDKGI4r0ZAqaENUfDpmmv3C3OuD4y/eS3h7YscJ9gufVX5Lex8VmFDlZLUH+PtHReFbNmkO82QI91HoA==
Quark-linux-amd64-0.3.0.deb xQJ92MAyrIXmn8Kvw3ozGDbG45znkXUlluIZmCIM/2LXw4TkzAdUdRyuRrtJ+WenAsfVVwVAQ3+AHvqcWEJG5w==
Quark-linux-x64-0.3.0.tar.gz Jg5yJmGpHpreVO1uGYtu7cBt5I11kbFRmPiPb7JNohx0Oizq94y7oOr7HIk7lIRVfeUunIrPK/KFedefi79Nzw==
Quark-linux-x86_64-0.3.0.AppImage iyM6hbL89ak1Vup+7V5OWD/YReyY17WUDY8TMY/58dekj8aSZP3fn2yYUMpLoRFiA+ghjCJGYl+wd9enJyl/xQ==

Release Notes

Version: Quark-v0.2.x

Quark 0.2.17 - June 8, 2019

πŸŽ‰ Features
  • Added recently-opened file menu item.
  • Added inbuild e2e tests. 😭 (finally)
  • Running tests on travis-ci and appveyor.
  • Partially added firebase-user console.

See SHA-512 Hashes

File Hash
Quark-win-0.2.17.exe sWjMF/sGIprcwjN0dRH9v7vL1mZw+1VJB/2w8fzYjekYGu2cCO3HFmkLI4bXKPIh7QWkK5Tz+ERmf1xhcx2Fhw==
Quark-linux-amd64-0.2.17.deb +LqHs9vZ5QfYCH3Y0m00nOiZ/x1QnQrTzLNTIWmEU2FbZm7Bjc1uS1R4BlXbqn/WOS7UwP1/OWla1zHZFM5ZzQ==
Quark-win-x64-0.2.17.zip bG4ZG+PXhQbNPXtH4ofAeo9ZbxCXmTBowMtkHnZ74Ng0hEapJnF7QwnGoqYm0iLQ1TeyZ730kyKnEoSVTz/RmQ==
Quark-linux-x64-0.2.17.tar.gz LOCfu2/Pbp29YWH88gVq6BW3iVNY4TlXS0O+55FECJoajLQfayNHjDkyShiwiE7xMBwQgp3eo+77wqZbIbSM1Q==
Quark-linux-x86_64-0.2.17.AppImage SyMlKeRwxnk9P1lxQ9hu6+zwo24HCdjZqSblgdjM4H6aZEQUXxuxPfxj0dURQT2SwXG7UipKlFamgovi4pDFXQ==

Quark 0.2.16 - May 26, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed output-channel bug.
Other changes
  • Changes @squirtle namespace to @quarkjs.
  • Removed p5.js package.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.16.deb n9ARyZOJzgqNNESlv9+n3r8ebV4eomuWyUDHIzXaEPRp49dDLBOuPdPsln3IdiNl9XBqQI6mFuRFhlKn8D4wdg==
Quark-win-0.2.16.exe EmzMotksOF0tnLkWJzLAmH7uZVSNCtkA7we+sg9TlTGfPReAIenIjRmOMAhbi0ywTqF5AmtEMGxpLj1N3ZXkQg==
Quark-win-x64-0.2.16.zip cqDxs6GEXzAdnR7xthYKO6tIUmPlcoj49l37Cs9TZWxpBRPeDl5YnYr7L3nJsUGKAMExDnX3X08FR08moKveWQ==
Quark-linux-x64-0.2.16.tar.gz ou5Y9oOEzt7POjvD115WpnL4z8YSFjSM/ZLpM3QiiSuIDry9rWub27llbclpY8skjJ+9kuBhjUsAtRINaqxD7w==
Quark-linux-x86_64-0.2.16.AppImage +r8f+2W59gGQLI14iI41by6RS0YD9tXfX9UlW+vCyaxDJA8Mh6Y9mXMMJoBS8gS32oVX5pVqeHGhP1Nvn6J+0A==

Quark 0.2.15 - May 23, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed snippets default import error.
  • πŸš‘ Fixed output-channel settings error.

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.15.deb MpjTQ8zBfxvbzJF2YIsL5gF9VaZsD+goBmZRWJ2uC6rvhgm3xR+XRNyXWFlj+p8cwe0xYWcyi/3e0G8l4rSCAg==
Quark-win-0.2.15.exe 59lyPsFm95VS0dsmZU/SnF+x0IigiqGXbncXMDvCFyiesUoAM2YhJ1sN+3h3pmRNCI0S2/rszhrHKYLMLqvhVw==
Quark-win-x64-0.2.15.zip eCqW4WJj1jXhsOwPrGJslAv9UF6bk7ms/Z/hd5H2CmUphgqJNrtWOZd/5mnGSxoWGTUxbSbNTcX9Rqr6LtNBHg==
Quark-linux-x64-0.2.15.tar.gz aTaBXeqW0YkJikNnkrHt8MSgufI+kYC0qpGTDRaj18HYFm9lbLLmkv2NKvAAqGoTfJkbvxR9RtlzyGjXu6boEA==
Quark-linux-x86_64-0.2.15.AppImage jp+pnyzYO+1oc6QCKcZx+b05G3cNFNoRrGHfG3WxNwYfcLDcPhxwdxks/wGvTdElgAl2qjSsljeL50wtIK4xyA==

Quark 0.2.14 - May 19, 2019

🐞 Bug Fixes:
  • Wrong config.entry file name (data type) caused window to crash.

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.14.deb XXFO9HDeFcohYGWUh5LXNulYMZcIkJQAeNeHl3nyjg98SPOGXIGCdRsJLJl89kzFwZNNV3+QZ9g93OrKsDa9Lw==
Quark-win-0.2.14.exe iSd4Tvn02DoxT0aYngJfWwleEBHxlQlH1AUTH3V9D0eFy1ENFHMPDXn1zQ2t1k7eIhoV7p+fvGuaZuTEcjpPnQ==
Quark-win-x64-0.2.14.zip VfMcJiYjyXKf9ATdPBcNK3qkZIx/JdEgHNni/GmvnHzoHyXXIRZChk2pTfrfFqpyaOUP++UfpxmNy+Tu7HB8Vg==
Quark-linux-x64-0.2.14.tar.gz kVpA0d5mYh1RfqSmuPRxhd5v3mPlvwjsd0SjhLGDnwlQopDV8PAFI8AqFx/3DoFmStxz4U2QORy551DQIOmskQ==
Quark-linux-x86_64-0.2.14.AppImage QuCYQ8IqQCVRthKhqzdk5t9oGwbgFAMtsyqWI26C4b2ubYO3jACabl4MbiYqqaJEuGFOrZTP5kuJ2YGqPE3ESA==

Quark 0.2.13 - May 15, 2019

Minor changes
  • ⬆️ Updated snippets to dynamic imports.
  • Removed old definition providers.
  • Dependency update release.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.13.deb D3lK/zbpB1f4OpuX+FOXwlc4S6QcspEHKwfv3a9X7WRkQQ2oAdnX0hZGs7EFGxFBcTFGZk2wM2MW+6uJrb8g+w==
Quark-win-0.2.13.exe 0HUArgDqnzLKmP/WTRFKuaS0TBvvvlGNNMVJK02a1K3KZSgGbKfKqFdBTrDqDUI/dq2xSfch2yGhbILiVdD97w==
Quark-win-x64-0.2.13.zip pHYbrDcmVwpdN3MUOrvW7ABaa3eawo5CUxP7NWEvkIvbF9FpFHjHd22ukJmxXxrTrca7+kdfLy07Khn4j+o6kQ==
Quark-linux-x64-0.2.13.tar.gz 6NTVjirrsjKIYUuaxKLV0dyO27JO9WO0Zmx+rpYkNKLTf4Ypk802LwDhsf/Ou2og3OOfv8BHDUdYGTB1gQDWIw==
Quark-linux-x86_64-0.2.13.AppImage ISYLWxu2oVa29SJ27ljjzzIhfurTdK0z4F2ya6GbaoPFHHb4IhHoL83V16ruhXm0FwmwJQcvkhqj6AvB3IRkQA==

Quark 0.2.12 - May 15, 2019

Minor changes
  • ⬆️ Updated monaco-editor version to 0.15.6.
  • Removed emmet css.
  • Implemented new monaco-editor context menu.
  • Implemented new definition/reference provider.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.12.deb xbNI5nOFHmoOgvyiAmRPD5TaulNSW8NDwP9QwPz4+Zef+9mrV0lTrZsAbOtl/TLIHAyK+hkFXaEYe3zdKah4hg==
Quark-win-0.2.12.exe toCsSd4g8KsBGY89hfpzRP+P2vPiNJRN6EezKArlHCqwPE3mrWAKBDp+KtTEQFgYh2pCC+p1/mO5cc9uznOU+w==
Quark-win-x64-0.2.12.zip OaBb6LQNXKDP1RaKVMLpVmi6vpMwJNdcTa5XF+AedI4XxKDo5yZDfTYcBAhafQX3LewmGjXW8xeWEK1nXfJMCQ==
Quark-linux-x64-0.2.12.tar.gz N3xyLrF4U0rahbrI/x7cE3YEgeLz80q0sM5mRZNbHx04Sq1xxo646IQVgT7Y5XW3QhV0Tj5LBSJTxNQLmJaNJg==
Quark-linux-x86_64-0.2.12.AppImage UIwk/Zd2lX5wGWfhQdX4vHbflcgA2zfrs9pT8d/NoFS0UE4VSqreN8AEkucMUqMq7mLTdJnE3miKQHF5pqie4w==

Quark 0.2.11 - May 13, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed html-emmet bug.
Other changes
  • Removed p5.js due to license issues.
πŸŽ‰ Features
  • Added path intellisence.
  • Added icons in suggest-widget.
  • Added and tested eslint. Working out on use-cases.
  • Added text-to-worker method in util.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.11.deb k+qW1mxEi4B/IoEz7f/IKuuSIDGKL0nxNIEtGLHUGGLs+/wO+pFIiZEjsUziDGuTE8WrR1vuL3wD0yhDb/9F5g==
Quark-win-0.2.11.exe TmOh8XUd2j91NUuOxtXcuN8m2cCBk3mg8eHbqSXWPweZAWhTC0IQr8eCNitaryv7zLoh9rzXOYnQu+W3Lsdo0w==
Quark-win-x64-0.2.11.zip qjbrZP2PGpqJkNDrFo2w+oNnvmgbMs/IML+aYNpVi3Y7uucM+ElqtTYPLp5nzIxhRBADSRlZPEMh3U/G9rOPTw==
Quark-linux-x64-0.2.11.tar.gz Wwkhu1ZsaY7K4vFQp9KgSipSPqIqrkgHR+JCKx1UDUCiQkBj8+2F3Y+Cixd4XLuqgohdu2r1aarLIcxYdzsVUg==
Quark-linux-x86_64-0.2.11.AppImage BJLv9tl2guP9SIh6UE5e3i0intqrILAWbQJxu5P/poB5uE2xuhTzArTr4m15Y64mBkKTalyk6UaAu+63xK1D/g==

Quark 0.2.10 - May 9, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed app.secondInstance new browserWindow issue. (Needs more testing)
Other changes
  • Added close dialog on browserWindow fail.

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.10.deb 1+4MSUXR2F2RxgL8XekmhhmCEM3RAu7QKnsVeaFmul0FuwvoEDPgNxRVbkDYBKBhKzlWysLE+Y8UnDz8q1fPNg==
Quark-win-0.2.10.exe R5pOhECOh6BQ9yiB+zqdlW6rF7Vpr/ZJXgn4eeXWhac+YCEjNS3s3vfJ4N2AjFX3dxGVCxWFAtOrVPJUWCZPJw==
Quark-win-x64-0.2.10.zip xiCTqTp76XU3xqYWm1V4a2CjPnYSBWNZVaWNHwjAwJ6c7pXDLAGrIWQ4gDSfc6jdkAQJuqyEvKBHvk3c1mUNpw==
Quark-linux-x64-0.2.10.tar.gz VVBQbR4sPr/HkCmEaw1SR8NdHOfF8l3KSvV1Or3UqnGhSQ+yullWxgL2CXMkRCYR6cEXne8mKZd1LSgmHjNqpA==
Quark-linux-x86_64-0.2.10.AppImage J0yBR7dFDDdMsZRZsRLwdmJewmLj3+6vAfJGlnH4zOedcDlO/pHoqUTAUINREHblnbfXZca4Fdru+5GuNLLcEQ==

Quark 0.2.9 - May 9, 2019

πŸŽ‰ Features
  • Implemented asar packager and runtime.

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.9.deb H7d3wQlT3Wn46akHCQfwUfZTGZViUsAGixTDDhPzAzYmGT1TjOBTMyLt86GRRsVrS1Bmy7+rCkaoQkXUwrblMw==
Quark-win-0.2.9.exe fquIyT+0qlVTLF23Ogkpj3xpdEChNXNks7uxnjTaN1DmP252cPivQxrK5Bs6pZ1ERVcnPPxQBtslYa9y6FK7QQ==
Quark-win-x64-0.2.9.zip SY4ZQpDTQu6B6mOZpxEHNhDO6WXIoyPZaZmzDCKvhPMvkCfk3jA7yHTfmroL1VxVNLp5JlpwsqcuRuJZU6bqfw==
Quark-linux-x64-0.2.9.tar.gz zJdzNBu+92JkgauRqu8kzeFeEHgncMYf/cWELR+K7s2ZXTLlhL3yo9ktNOJgnBFsv4su1emeyghHwkY3dJI4aw==
Quark-linux-x86_64-0.2.9.AppImage obQtwaL0h9IUYAHr7dJrw0y/z1JFI4BV/7n/kqc4ChfHFFz9ghOIIZjuWEEcNUW3JuLHTI66u3Bs9AKx18SRnA==

Quark 0.2.8 - May 9, 2019

🐞 Bug Fixes:
  • πŸš‘ Fixed 'main file path' null error in auto-colpletion.
  • Replaced spawn with fork in npm install script.
  • πŸš‘ Fixed imports from relative paths.
πŸŽ‰ Features
  • partially implemented asar packager in backend.
Other changes
  • New project now starts in a folder.

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.8.deb WO6KvjLahiRSn/X/g7IEjyxxn5uM0KqQqqZiivp31p7joVY3qx5bB1J3ZGtobZviZThkO0v2nW99AzZslY+fIg==
Quark-win-0.2.8.exe tNbTQTQqGqU8WocbHLDQN43mSESJY6k2M+ZywX7WMcotvwaPxltCVa5mv/J7meHrk7EFxzPUWzSNh9GbBAOVQA==
Quark-win-x64-0.2.8.zip G537WXwhfZpAWQHhEyIZQYKXcTfj4JZWERDbdHSM3OdGst5hDKeveAqirV0hpWJEEPwmCcrUPcu2OXvreNnauA==
Quark-linux-x64-0.2.8.tar.gz BruHJfjw6E2cTMQoFazjiUI8Q89NFc4FX9z0iN2M8j5JrNqjCeA5lPtBUVL+xty9i2l7kqk2ILrL4t5z4qBBfA==
Quark-linux-x86_64-0.2.8.AppImage +EC0zKMtGjwCtSZWLcArZODizpVm5vjnNYY5Tr2o6rm+0Q3rYkTmYZJJA8k4LfBDdgXEdVvt6ZBqk6No9GxS6g==

Quark 0.2.7 - May 4, 2019

🐞 Bug Fixes:
  • Re-uploaded code signed binary.

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.7.deb RfwNsA9Ym1ui9PUmSC2vpKr92vZBWzKNwtiP6hUkvdURI+xht2tGZHCD76sOQsaTt+lQTGVD+9ia1CJ4vxx/RQ==
Quark-win-0.2.7.exe 7l8mMK/c1szokzAQXhd0PHmUVE341iY0AHGpsopQKzc1s+Xy0RvpFYK6MwdfgGZXdYn/UZLAs3tEyB+vYQP6Fw==
Quark-win-x64-0.2.7.zip vOUIwouyvU5u/276YlS/3DUTTtjjUjLcRP6t60SPZvHNd9k7aMJMDO5aR9pk5fFe7XJLpiZxHZG5Tan+CpjdRA==
Quark-linux-x64-0.2.7.tar.gz byWTF/NA4PDp1uxX5FaSyzIeLNuhpQtl+Wy3RaJYZoHZcSxjHj1DVxqcZDmxCmn773VXWtopo2rbPL4/m1JayQ==
Quark-linux-x86_64-0.2.7.AppImage T+mHOfp7LNN75dxMDiNWPU7CjX+kMF0MR1RbZOakw1zS9r98gnpXYK7A0+5B9xOhlGQ+0t/sj9r/FZVm6CB8BQ==

Quark 0.2.6 - May 3, 2019

πŸŽ‰ Features
  • Added react-styled-components.
  • Added partial typescript support.
  • Added find and replace component.
  • Added react snippets.
  • Added textmate grammar for scss and json.
  • Added vscode-monaco theme converter.
  • Added electron, one-dark theme.
  • ⬆️ Updated tmLanguage definitions.
Other changes
  • Changed webpack default mode from 'production' to 'development'.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.6.deb OBb+45HFUpkCEpupsQdLi9TpWOBF29OnBy5QMzUzmpfS7XDYBmy4Rch4jNAqCI2WbmQgASb7AgSOi85JLG0Ryg==
Quark-win-0.2.6.exe Q67ggpqrXH+9fv/OAeEVqTXwP4TFl9Lz77fF3JPrxRGMY8fkMpRQDCvF1qz74zbOXD6gP9dsUE7jLwmLoGPy5g==
Quark-win-x64-0.2.6.zip A05VkU3q9t9b4/30ewMLrgD5oF0IWPkQuvEMhM7Q/n19h9fvTYjqUCfO1krpeFyIUEt0sA+cglbmqjPuASyjlg==
Quark-linux-x64-0.2.6.tar.gz vtMHLr3OkO8Tw5aeYpAsAKCkCS5EkvHnCGjtMiyf8intoaelJGp+VqygLu90niP4cnA5DiIIBS6xiPtocEBkVg==
Quark-linux-x86_64-0.2.6.AppImage DpsXEt9Eh+0OWmodCOmN7+X0zhudsp34rdtIk7L89MnFBmDUom4Wa4AI86AXFGG2pL9pkTKCn7AkhBp8Br5vrA==

Quark 0.2.5 - April 29, 2019

πŸŽ‰ Features
  • added material theme icons.
  • added recent file sorting in file explorer.
  • added recent file sorting in quick open file.
🐞 Bug Fixes:
  • πŸš‘ Fixed onDidRemoveView handle.
  • πŸš‘ Fixed file rename handle css.

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.5.deb 2zxEFLuJLw73gpwkbzQuehchueL1hr/Iqv+bRQV3hPASI5rQAwlg4X+qntj4BnhC/nJDmiktiqxbqDtz/ZtBLQ==
Quark-win-0.2.5.exe JSRNbg2ebKPgfONaIuDm0OB3pBdb9sYWNajUV4JN1BGjv1hG6x1AqMtm6icP1OKVfIGQmWZEw2N4JdMEjGk/DA==
Quark-win-x64-0.2.5.zip g+zvTJBV4Tqn/cl9x0NyvCCtGVgLdnQfwsNZICCIJDTMw91U7bn53vHypQ/CjuaNNzh9kD2caEKu2n7ITSUrSw==
Quark-linux-x64-0.2.5.tar.gz 0n3r+m73vD/XEFj4dmsdYSq3+bqBB42MoEK+JjEEmuvEDhQQrcFPtLuIhjGXyvuhs8W5tihX22i8nJp1blRvow==
Quark-linux-x86_64-0.2.5.AppImage +lAl2QVCoQZ7MQaFTBgEiEQWJzTaGjvoVANs5CIn15eM+YDvFk5pXW+lZsCxvh9H+7cl6MEO1dcdZGe2gyf1VQ==

Quark 0.2.4 - April 28, 2019

πŸŽ‰ Features:
  • Added emmet through emmet-monaco-es dependency.
  • Added type definition support for in-memory files.
🐞 Bug Fixes:
  • πŸš‘ Fixed react's regeneratorRuntime not defined error.
Minor Changes:
  • πŸš‘ Fixed output channel theme issue.
  • Terminal theme now borrows colors from global css variables.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.4.deb +32veePlfwsn6MeA5GBm/eUYAL5qKLeEVTyTQM8bvQmeCBRBXIWBclne2R+t1qL3Fq78AFgnK+e/cr3LNUnpEQ==
Quark-win-0.2.4.exe SMzQIpXMlq3Mn343GKeQFp/rIDCb9kkRhIVt1M/xUgZfqT6ZpFXHebEicN5wVoEPSprprEzPGkCfSlhl5JiQAQ==
Quark-win-x64-0.2.4.zip LgLQpbfS9N/F+d9triNz9bxrtof9sA0ttmDLEMOY1fjHTpZTn/UbMcRtrrrQX2u3Mtdx/TUGDGKlwtAtlJStww==
Quark-linux-x64-0.2.4.tar.gz dqoNSDYqLCcCn5FLPKutrDIeSehEFvbzYaVu00X+daC4SpTfAVFawAVG9PDh3RosKZzd9tlhOkSfy6PWZVptlw==
Quark-linux-x86_64-0.2.4.AppImage 6dLe9p8K010KkCJRDZ10yUVb5xaIAKLCVkZOXDBW6Uesd4p5M8JMdGwC305vkHi0OTUOktokSaLHPhHfpTjxaA==

Quark 0.2.3 - April 27, 2019

πŸŽ‰ Features:
  • Added textmate for better syntax highlighting.
  • Added monokai and one dark theme.
🐞 Bug Fixes:
  • πŸš‘ Fixed settings scope bug.Workspace settings now take precedence over global settings.
  • πŸš‘ Fixed persistant store onDidChange() method. Now using fs.watcher to detect file changes.
  • πŸš‘ Fixed window crash while adding extra libs to an opened editor.
  • πŸš‘ Fixed window state restore handle.

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.3.deb YhJOXf6dpf6UK1Kj5KlNbpUFMIHWbZpzk66EhMd00dgal5PRzl7+N1vJYpP9tMY1+Qsjk9isgwf7lgWuhdmsLw==
Quark-win-0.2.3.exe yegBc3OrBQ52K8/zYoP9zQtyC9Q7leWx+ZwPKFeTXQBXQ7l1TaipUiVcsBRXypGfPonGFcBJCWXWJ25XwpYEjQ==
Quark-win-x64-0.2.3.zip TF7OveAisI2m2anFtrxFqWV06PoGvhSRxBiBCq461t5a+b/o4FalFASZaXU7T7Pp3Hmn6rRewhG+6ck1fkZmHw==
Quark-linux-x64-0.2.3.tar.gz m55LLmxwehwhoQ+07wOZcTRdUQW8BS4XKSvqMwRWPYytpl8Np4EsKdNPZqIxxDNflxryYF+mkjXD+iFjZo/2jw==
Quark-linux-x86_64-0.2.3.AppImage X/b9rVqYWyuNXJK2nDoCx3w3EOPFiRQFyD4UZrjAbtVKjX5qtJJgZWxCJU8uwg7PzzL6ta5nZUho/GFoU+BXAQ==

Quark 0.2.2 - April 25, 2019

πŸŽ‰ Features:
  • Added restore view state snackbar.
  • ⬆️ Updated monaco addExtraLibs scripts.
🐞 Bug Fixes:
  • πŸš‘ Fixed snackbar.dispose (not working) bug.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.2.deb pi3hC2PxXrrYLdsZthqUgqhW52bA0oTa9AwNuRAU9XQr3WCWjMyAmbYUCtUz01lOAjqUmqjbRbKfiEtMPWvLjQ==
Quark-win-0.2.2.exe BarPWj/554yX3B2wwZ7U/AjwRVdAAKhkrxyKZ0+0O63svJcsPycVAUltlBHYAHS6BT0GhHT9df2/ejr4sOtihw==
Quark-win-x64-0.2.2.zip W0354E/y8vA/cCqiNMgahdTPxa60HFRs22Wq+MskArpl7dZdD7lCxvTKB+mudzy8tMmYk17DiwAZN8glplt3qQ==
Quark-linux-x64-0.2.2.tar.gz Zdx1LbWe0fxUEo6P8a8016pIxvYtfAEGHaxIul/nhZN02fJmCCHZ9rkIJVH+ggqVLdvnCeX8ySelGGUhkVcAKw==
Quark-linux-x86_64-0.2.2.AppImage ff41SXtCluF1AoI6NLoM5vs51qIcMqN39Gt5YBY1v1eEKhV2KZdSo/kzSbDpR/b/L6HpCh1hE5oWBGeLQVR+vQ==

Quark 0.2.1 - April 23, 2019

Minor Changes:
  • Adding element in view.createView* methods now optional.
  • ⬆️ Updated landing page.
  • ⬆️ Updated npm install component script.
πŸŽ‰ Features:
  • Added support for jsx.
  • Added bable-loader presets for react.
  • Added markdown support with markdown-loader.
  • Added support for types definition in project directory.
🐞 Bug Fixes:
  • πŸš‘ Fixed missing bable-presets path error.
  • Downgraded electron version to 4.1.3.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.1.deb G89YxF80AHLOvYYPlFiIQDx60P+vW+3WQETBoF6rYpQL9i/cdURcBESl5ABgsSuNHcZJf2CCf2MeFGjeDoeQLw==
Quark-win-0.2.1.exe hlBIew8g6afXs5FamgxYwXEZ63Wege1pXfNc6xH8At3QnTeTPYpg1+VCzXhP+UUFhSWht7Vx51FJFm9pMzn/jg==
Quark-win-x64-0.2.1.zip FeRu46igba71A9y3hwjlsxbnqwNywWD3KFZOefsafLp+sgAxi6YzyP0HwegXyS93cWN3d3eLcs1oNnlMKJER8g==
Quark-linux-x64-0.2.1.tar.gz b9TO/D88ESVu3brZ5UUypi/IqsiC29G8OLFoopXpKZI69iJHB2fYrhc8HaeyMMTqOk19Efkp6JzGAI0PZ5tV1g==
Quark-linux-x86_64-0.2.1.AppImage iNNvXxftWiW8OnxM+A/FoMcBJirRH4FQZJcxLHV5YMEsgv2oWZMVI0SzSPqw7vzW9KyVQ61vtvhNDdskY5w8Ig==

Quark 0.2.0 - April 22, 2019

Minor Changes:
  • ⬆️ Updated angular version in template.
  • Major dependency updates in build.
πŸš€ Dependencies:

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.2.0.deb du19RF/Vgx3+1HPDohAGW36SaqVnR0JMHdZjRygdknCr7TejQ/PutkiUqnelB67dIfbMi5VjS8qIQ8pXnc1PYQ==
Quark-win-0.2.0.exe ecSS0qJFDhPLLyZ0G7zmqaFJqq9BRkv1JQiPxk2dCuKNigV5/EBa5lWTROP1f02fAkLgDuCQ+JOkRxgVzAkE3w==
Quark-win-x64-0.2.0.zip v7q/jmmbNZVV9oqRCY/Rr+/OY2AMjnml5gCN3MIlrEbYvblD8yEfKro2CUGrASav5QalqJ9Crf2tomRZnwNisA==
Quark-linux-x64-0.2.0.tar.gz hXJY76RwNgt4JV52qxWdtzsOaA7aMuTAm2oqN//HK0e3j4OInWfRq8ROGf9KXlWFHTw9fC17Xt0dKG7bzQb0tQ==
Quark-linux-x86_64-0.2.0.AppImage 0d8AOrHaa04uY9Vj0k6/6nvr9lsvcFH4pknbA/Lyk309XgWP5KkAVnblUMBlXSCcNL1TcHqlYmTgZxzDSlfbnQ==

Release Notes

Version: Quark-v0.1.x

Quark 0.1.19 - April 20, 2019

Minor Changes:
  • πŸš‘ Fixed windows nsis installer issue.
  • Added builds for *.tar.gz, *.deb and *.zip
  • Added shasum check table

See SHA-512 Hashes

File Hash
Quark-linux-amd64-0.1.19.deb mOoXmJWxwtlVzhiG9V+/0gw5+rQgYbPsFsBNxbXSB6BoEvts0vN8nEc+BioyjpA5cN3Lx0VTyAEbm/mE/NZNNQ==
Quark-win-0.1.19.exe zImOKl1f13HgunFcnWmAhTp6YLdCqjqhMcY88n8Ap+a0pCN/XRSKaanTv5o+h6lvKiYejPTDxJDtjwF6mYGA2Q==
Quark-win-x64-0.1.19.zip eqgGOooaRzn2VJqK/mENze830pSLe/+n1zWz6Km6ijp28kq2m8tFt2w94SkC1YnI2uEIS2dQ1uALk8+QSNZyjA==
Quark-linux-x64-0.1.19.tar.gz dIx/SsTLJMfNCd7pR5+8paaFpgFgIbRlRUU50lL4pAxzsW9TltFhFqokJ3MUVtlmns8Y9FfJ/b4ITapTBgQd5w==
Quark-linux-x86_64-0.1.19.AppImage /q6HfREVZUeeuqh5V+tvVf/gjAWS+MvnXAXCcOPn832sDf+tL5sMB3f4b2ntglTTjakCmnotYAljmeXIg3+QtQ==

Libraries

Introduction

All docs on one page.

Using existing libraries

Quark comes pre-installed with a few libraries. You can check which libraries are pre-installed by going to Help > View Installed Libraries from the main menu.

Pre installed libraries

This will open a dialog listing all the pre-installed libraries.

Pre installed libraries

Some of these libraries are used internally by the software, some of these libraries are proxied and exposed as an API, and some are used by the build system. Nonetheless all of them can be used from your project. Find out specific tutorials of using some of those libraries here.

Installing new libraries

Once you are comfortable with the Quark software and using the built-in functions/features, you may want to extend the ability of your project with additional libraries.

####### Using the built-in npm client To install a new library in your project you can use the built-in npm client. Click on the npm logo in the sideview to open the client, and search for the library you want to use.

Pre installed libraries

You can install the library by pressing on the install button, or first view the library repository by pressing on the Repository button.

After hitting the install button, you will be presented with an install status snackbar. If installing the library fails, you can check the logs from the Devtools section in the output-channel.

Pre installed libraries

####### Using systems package manager If you happen to have a package manager installed on your machine (e.g. npm or yarn) you can use that too.

### e.g. npm
npm install express

### e.g. yarn
yarn add express

Electron

All docs on one page.
Using the electron's renderer process api.

In your sketches you have access to all of the electron's renderer process API's. Let's see how we can use the notifications api in your sketches.

// setup.js
import { remote } from 'electron';
import * as path from 'path';

// notificationWithImage
const notificationWithImage = new remote.Notification({
    title: 'Notification with image',
    body: 'Short message plus a custom image',
    icon: path.join(remote.app.getAppPath(), '/appAssets/32x32.png')
});

notificationWithImage.addListener('click', (e, i) => {
    console.log('Notification clicked');
});
notificationWithImage.show();



// notificationWithoutImage
const notificationWithoutImage = new remote.Notification({
    title: 'Basic notification',
    body: 'Short message'
});

notificationWithoutImage.addListener('click', (e, i) => {
    console.log('Notification clicked');
});
notificationWithoutImage.show();

React

All docs on one page.
Creating and using a react functional component.
// setup.js
import { render } from 'react-dom';

function App() {
    const greeting = 'Hello Functional Component!';
    return <h1 style={{margin : '0px'}}>{greeting}</h1>;
}

const view = quark.views.createTabsView('React view');
view.onDidConnectElement = () => {
    view.element.style.backgroundColor = '#f0f0f0';##     view.element.style.height = '100%';
    render(<App />, view.element);
};

view.focus();

####### Result

Render a react component inside another component
// setup.js
import { render } from 'react-dom';

function App() {
  return <Headline />;
}

function Headline() {
    const greeting = 'Hello Functional Component!';
    return <h1 style={{margin : '0px'}}>{greeting}</h1>;
}

const view = quark.views.createTabsView('React view');
view.onDidConnectElement = () => {
    view.element.style.backgroundColor = '#f0f0f0';##     view.element.style.height = '100%';
    render(<App />, view.element);
};

view.focus();
Using import/export statements
// headline.js
function Headline() {
    const greeting = 'Hello Functional Component!';
    return <h1 style={{ margin: '0px' }}>{greeting}</h1>;
}

export default Headline;
// setup.js
import { render } from 'react-dom';
import Headline from './headline';

function App() {
    return <Headline />;
}

const view = quark.views.createTabsView('React view');
view.onDidConnectElement = () => {
    view.element.style.backgroundColor = '#f0f0f0';##     view.element.style.height = '100%';
    render(<App />, view.element);
};

view.focus();
Creating react class components
import { render } from 'react-dom';
import Headline from './import-export/headline';
import React from 'react';

class App extends React.Component {
    render() {
        return (
            <h1 style={{ margin: '0px' }}>{this.props.greeting}</h1>
        );
    }
}

const view = quark.views.createTabsView('React view');
view.onDidConnectElement = () => {
    view.element.style.backgroundColor = '#f0f0f0';##     view.element.style.height = '100%';
    render(<App greeting = 'Hello Functional Component!' />, view.element);
};

view.focus();

Vue

All docs on one page.
Using the esm build
// setup.js
import Vue from 'vue/dist/vue.esm';

const view = quark.views.createTabsView('My Vue');
view.onDidConnectElement = () => {
    const app = new Vue({
        el: view.element,
        data() {
            return {
                greetings: 'Hello Vue.js'
            }
        },
        template: `<h1>{{greetings}}</h1>`
    });
}
view.focus();

####### Result

Using multiple components
// setup.js
import Vue from 'vue/dist/vue.esm';

const myComponent = Vue.component('my-component', {
    template : '<h3>Hello parent component</h3>'
});

const view = quark.views.createTabsView('My Vue');
view.onDidConnectElement = () => {
    const app = new Vue({
        el: view.element,
        components : {
            myComponent
        },
        template: `<my-component />`
    });
}
view.focus();
Importing external html template.
<!-- template.html -->
<h1>{{greetings}}</h1>
// setup.js
import Vue from 'vue/dist/vue.esm';
import htmlTemplate from './template.html';

const view = quark.views.createTabsView('My Vue');
view.onDidConnectElement = () => {
    const app = new Vue({
        el: view.element,
        data() {
            return {
                greetings: 'Hello Vue.js'
            }
        },
        template: htmlTemplate
    });
}
view.focus();

Serialport

All docs on one page.
Listing all available serialports
import * as serial from 'serialport';

serial.list().then((list) => {
    list.map((port)=>{
        console.log(`COM name: ${port.comName}, Manufacturer : ${port.manufacturer}`)
    });
}).catch(console.error);

####### Result

Listing all available ports in DOM
import * as serial from 'serialport';

serial.list().then((list) => {
    list.map((port) => {
        console.log(`COM name: ${port.comName}, Manufacturer : ${port.manufacturer}`)
    });
}).catch(console.error);

const view = quark.views.createTabsView('Serial ports');
view.onDidConnectElement = async () => {
    try {
        const list = await serial.list();
        let html = '<h1>Available Ports</h1>';
        list.map((port) => {
            html = html.concat(`<h3>${port.comName}</h3>`);
        });
        view.element.style.padding = '20px';
        view.element.innerHTML = html;
    } catch (err) {
        console.err(err);
    }
}
view.focus();

####### Result


Examples

Activity Monitor

All docs on one page.

####### The project that we are finally going to build, will look something like this:

Note

The complete project could be found here on the github repo.

Create a new Project

Just like we did it in the getting started guide, create a new project.

Creating the directory structure

We need only 2 files, the base setup.js file and a util.js file. Create the directory structure like so.

.
β”œβ”€ setup.js
└─ util.js

Write the code

####### setup.js

// setup.js
import { drawChart } from './util';
import * as os from 'os';

// create an element for the view
const element = quark.util.createElementFromHtml(`
    <div style="width:100%;height:100%;">
        <canvas id="my-chart"></canvas>
    </div>
`);

// create a view
const view = quark.views.createTabsView('Activity Monitor', element);
view.onDidConnectElement = () => {
    const canvas = document.getElementById('my-chart');
    drawChart(canvas);
}
view.focus();

// optionally hide navbar
// quark.views.tabsviewController.hideNavbar();

// set the app theme
quark.util.setAppTheme({
    "background.dark": "#111111",##     "on.background.dark": "#ffffff",## 
    "background.default": "#222222",##     "on.background.default": "#ffffff",## 
    "background.light": "#3e3e3e",##     "on.background.light": "#ffffff",## 
    "background.divider": "#4D4A4B",## 
    "primary.default": "rgba(54, 162, 235, 1)",
    "on.primary.default": "#000000",## 
    "secondary.default": "#ff7246",##     "on.secondary.default": "#000000"## });

const status = quark.util.createStatusBarItem(quark.StatusBarAlignment.Right);
status.text = `Monitoring CPUs: ${os.cpus().length}`;
status.show();

####### util.js

// util.js

import * as Chart from 'chart.js';
import * as os from 'os';

var lastMeasureTimes = [];
var chart = null;

function setLastMeasureTimes(cpus) {
    for (let i = 0; i < cpus.length; i++) {
        lastMeasureTimes[i] = getCpuTimes(cpus[i]);
    }
}

function getDatasets() {
    const datasets = [];
    const cpus = os.cpus();

    for (let i = 0; i < cpus.length; i++) {
        const cpu = cpus[i]
        const cpuData = {
            data: getCpuTimes(cpu),
            backgroundColor: [
                'rgba(255, 99, 132, 1)',
                'rgba(54, 162, 235, 1)',
                'rgba(255, 206, 86, 1)'
            ]
        }
        datasets.push(cpuData)
    }
    return datasets;
}

function updateDatasets() {
    const cpus = os.cpus()
    for (let i = 0; i < cpus.length; i++) {
        const cpu = cpus[i]
        chart.data.datasets[i].data = getCpuTimes(cpu);
        chart.data.datasets[i].data[0] -= lastMeasureTimes[i][0];
        chart.data.datasets[i].data[1] -= lastMeasureTimes[i][1];
        chart.data.datasets[i].data[2] -= lastMeasureTimes[i][2];
    }
    chart.update();
    setLastMeasureTimes(cpus);
}

function getCpuTimes(cpu) {
    return [
        cpu.times.user,
        cpu.times.sys,
        cpu.times.idle,
    ];
}

export function drawChart(element) {
    chart = new Chart(element, {
        type: 'doughnut',
        data: {
            labels: [
                'User Time (ms)',
                'System Time (ms)',
                'Idle Time (ms)'
            ],
            datasets: getDatasets()
        },
        options: {
            maintainAspectRatio: false,
            title: {
                display: true,
                text: 'CPU Activity',
                fontColor: 'rgb(250, 250, 250)',
                fontSize: 16
            },
            legend: {
                display: true,
                labels: {
                    fontColor: 'rgb(250, 250, 250)',
                    fontSize: 12
                }
            }
        }
    });
    setInterval(updateDatasets, 1000);
}

setLastMeasureTimes(os.cpus());

Build and run the sketch

  • Press the build button at the bottorm right side of the status bar. (Or use ctrl + shift + b).
  • Press the run button at the bottorm right side of the status bar. (Or use ctrl + r).

Arduino dashboard and data logger

All docs on one page.

####### The project that we are finally going to build, will look something like this:

Note

The complete project could be found here on the github repo.

Features

Serialport selector: A graphical user interface component that allows you to select the serialport for your Arduino.

screenshot

Dashboard: A dashboard that prints the real time values on the screen and also draws charts.

screenshot

Datalogger: A data logger that will read data from arduino and save it on your computer in csv format.

screenshot

Getting started

  • Clone this repository
  • cd examples/arduino-dashboard
  • Upload the arduino.ino file to the arduino.
  • Open project file arduino-dashboard.qrk to edit project, or build file arduino-dashboard.build.qrk to run the project in Quark.

Running the project

  • Open the build file arduino-dashboard.build.qrk in Quark.
  • Press ctrl+p and select the COM port of your arduino from the serial port selector.
  • To start the data logger, open the commands palette## by pressing ctrl+shift+p, and select Datalogger: Start command. You will see a notification on the bottom right of your screen if the logger was started.
  • To stop the data logger, open the commands palette and select command Datalogger: Stop. This will open a save dialog where you can enter the path of the file where you want to save your data.

Prices

All docs on one page.

####### The project that we are finally going to build, will look something like this:

screenshot

Note

The complete project could be found here on the github repo.

Create a new Project

Just like we did it in the getting started guide, create a new project.

Creating the directory structure

Create the following directory structure.

.
β”œβ”€ index.html
β”œβ”€ setup.js
β”œβ”€ styles.css
└─ util.js

Write the code

####### index.html

<!-- index.html -->

<div class="container-fluid">

	<!-- Oil Row -->
	<div class="row oil">
		<div class="item">
			<h1>Oil <small>per barrel</small></h1>
			<h2>
				<span id="oil-price" class="price"></span>
				<small id="oil-change" class="change"></small>
			</h2>
		</div>
	</div>

	<!-- Gold Row -->
	<div class="row gold">
		<div class="item">
			<h1>Gold <small>per ounce</small></h1>
			<h2>
				<span id="gold-price" class="price"></span>
				<small id="gold-change" class="change"></small>
			</h2>
		</div>
	</div>

	<!-- Silver Row -->
	<div class="row silver">
		<div class="item">
			<h1 class="silver">Silver <small>per ounce</small></h1>
			<h2>
				<span id="silver-price" class="price"></span>
				<small id="silver-change" class="change"></small>
			</h2>
		</div>
	</div>

</div>

####### setup.js

// setup.js

import './styles.css';
import html from './index.html';
import { updatePrices } from './util';

// hide navbar
quark.views.tabsviewController.hideNavbar();

// create view
const element = quark.util.createElementFromHtml(html);
const view = quark.views.createTabsView('Prices', element);
view.onDidConnectElement = () => {
    updatePrices();

    // update every 10 seconds
    setInterval(() => {
        updatePrices();
    }, 10000);
}
view.focus();

// set app theme
quark.util.setAppTheme({
    "background.dark": "#111111",##     "on.background.dark": "#ffffff",## 
    "background.default": "#222222",##     "on.background.default": "#ffffff",## 
    "background.light": "#3e3e3e",##     "on.background.light": "#ffffff",## 
    "background.divider": "#4D4A4B",## 
    "primary.default": "gold",
});

####### styles.css

/* styles.css */

.gold,
.gold small {
    background-color: gold;
    color: #403600;## }

.silver,
.silver small {
    background-color: silver;
    color: #404040;## }

.oil,
.oil small {
    background-color: black;
    color: #E5E5E5;## }

.container-fluid {
    height: 100%;
    display: flex;
    flex-direction: column;
    user-select: text;
}

.row {
    flex-grow: 1;
    padding: 20px;
}

.price {
    padding-right: 5px;
}

/* Add a ( before the change */
.change::before {
    content: '(';
}

/* Add a ) after the change */
.change::after {
    content: ')';
}

/* Add a $ before the price */
.price::before {
    content: '$';
}

/* Hide the price and change when they are empty */
.change:empty,
.price:empty {
    display: none;
}

h1 {
    font-weight: 700;
}

####### util.js

// util.js

import * as csv from 'papaparse';

let url
const stocks = {
    'oil': 'CL.F', // Crude oil, https://stooq.com/q/?s=cl.f
    'gold': 'GC.F', // Gold, https://stooq.com/q/?s=gc.f
    'silver': 'SI.F' // Silver,https://stooq.com/q/?s=si.f
};

export function updatePrices() {
    for (let symbol in stocks) {
        url = `https://stooq.com/q/l/?s=${stocks[symbol]}&f=sd2t2ohlc&h&e=csv`

        csv.parse(url, {
            download: true,
            delimiter: ',',
            complete: (results) => {
                // price data is the second array, first is headers
                const prices = results.data[1]
                const previousPrice = parseFloat(prices[3], 10)
                const currentPrice = parseFloat(prices[6], 10)
                let change = Math.round((currentPrice - previousPrice) * 100) / 100

                if (change >= 0) {
                    change = `+${change}`
                }
                
                console.log(`${symbol}-price`);
                document.getElementById(`${symbol}-price`).innerText = (currentPrice.toLocaleString());
                document.getElementById(`${symbol}-change`).innerText = (change)
            }
        })
    };
}

Build and run the sketch

  • Press the build button at the bottorm right side of the status bar. (Or use ctrl + shift + b).
  • Press the run button at the bottorm right side of the status bar. (Or use ctrl + r).

Hash

All docs on one page.

####### The project that we are finally going to build, will look something like this:

screenshot

Note

The complete project could be found here on the github repo.

Create a new Project

Just like we did it in the getting started guide, create a new project.

Creating the directory structure

Create the following directory structure.

.
β”œβ”€ index.html
β”œβ”€ setup.js
β”œβ”€ styles.css
└─ util.js

Write the code

####### index.html

<!-- index.html -->

<div class="container-fluid">

	<!-- Input row -->
	<div class="row">
		<div class="item">
			<h3 class="hash-heading">Input</h3>
			<textarea rows="2" id="text-input" class="form-control text-input" placeholder="Enter text and see it hashed..."></textarea>
		</div>
	</div>

	<!-- MD5 row -->
	<div class="row">
		<div class="item">
			<h3 class="hash-heading">MD5</h3>
			<pre id="md5-output" class="hash-output"> </pre>
		</div>
	</div>

	<!-- SHA-1 row -->
	<div class="row">
		<div class="item">
			<h3 class="hash-heading">SHA-1</h3>
			<pre id="sha1-output" class="hash-output"> </pre>
		</div>
	</div>

	<!-- SHA-256 row -->
	<div class="row">
		<div class="item">
			<h3 class="hash-heading">SHA-256</h3>
			<pre id="sha256-output" class="hash-output"> </pre>
		</div>
	</div>

	<!-- SHA-512 row -->
	<div class="row">
		<div class="item">
			<h3 class="hash-heading">SHA-512</h3>
			<pre id="sha512-output" class="hash-output"> </pre>
		</div>
	</div>

</div>

####### setup.js

// setup.js

import html from './index.html';
import { registerUpdateHandle } from './util';
import './styles.css';

// hide the navbar
quark.views.tabsviewController.hideNavbar();

// create view
const element = quark.util.createElementFromHtml(html);
const view = quark.views.createTabsView('Hash', element);
view.onDidConnectElement = () => {
    registerUpdateHandle();
};
view.focus();

// set app theme
quark.util.setAppTheme({
    "primary.default" : "#488aff"## });

####### styles.css

/* styles.css */

.container-fluid {
    padding: 20px;
    user-select: text;
    height: 100%;
    background-color: #D6D8DC;## }

pre {
    white-space: pre-wrap;
    word-break: keep-all;
    padding: 8px;
    background-color: #f5f5f5;##     border-radius: 3px;
}

.text-input {
    font-size: 16px;
    width: 100%;
    background-color: #f5f5f5;##     border-radius: 3px;
}

.hash-output {
    color: #626669;##     font-size: 16px;
    letter-spacing: 2px;
    white-space: pre-wrap;
}

.hash-heading {
    color: #626669;##     font-weight: normal;
}

####### util.js

// util.js

import * as crypto from 'crypto';

export function registerUpdateHandle() {
    document.getElementById('text-input').addEventListener('input', (ev) => {
        const text = ev.srcElement.value;

        const md5 = crypto.createHash('md5').update(text, 'utf8').digest('hex');
        document.getElementById('md5-output').innerText = md5;

        const sha1 = crypto.createHash('sha1').update(text, 'utf8').digest('hex');
        document.getElementById('sha1-output').innerText = sha1;

        const sha256 = crypto.createHash('sha256').update(text, 'utf8').digest('hex');
        document.getElementById('sha256-output').innerText = sha256;

        const sha512 = crypto.createHash('sha512').update(text, 'utf8').digest('hex');
        document.getElementById('sha512-output').innerText = sha512;
    });
}

Build and run the sketch

  • Press the build button at the bottorm right side of the status bar. (Or use ctrl + shift + b).
  • Press the run button at the bottorm right side of the status bar. (Or use ctrl + r).

Mirror

All docs on one page.

Note

The complete project could be found here on the github repo.

Create a new Project

Just like we did it in the getting started guide, create a new project.

Creating the directory structure

Create the following directory structure.

.
β”œβ”€ index.html
β”œβ”€ setup.js
β”œβ”€ styles.css
└─ util.js

Write the code

####### index.html

<!-- index.html -->

<div class="video-container">
	<!-- Video that displays the camera feed -->
	<video autoplay></video>

	<!-- Rainbow filter overlay -->
	<div class="rainbow-filter"></div>

	<!-- Rainbow filter checkbox -->
	<label class="filter">
		<input type="checkbox" id="rainbow-toggle"> Rainbow Filter
	</label>
</div>

####### setup.js

// setup.js

import html from './index.html';
import './styles.css';
import { startVideo } from './util';

// hide tabs navbar
quark.views.tabsviewController.hideNavbar();

// create view
const element = quark.util.createElementFromHtml(html);
const view = quark.views.createTabsView(`My View`, element);
view.onDidConnectElement = () => {
    startVideo();
}
view.focus();

####### styles.css

/* styles.css */

.video-container {
    height: 100%;
    width: 100%;
}

video {
    padding: 0;
    margin: 0;
    width: 100%;
    height: 100%;
    background-color: transparent;
    object-fit: cover;
}

.filter {
    position: absolute;
    right: 15px;
    top: 15px;
    color: white;
    background-color: var(--primary-default);
    padding: 5px 15px;
    border-radius: 3px;
}

.rainbow-filter {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    display: none;
    opacity: .3;
    animation: 3s linear 0s infinite alternate;
    animation-name: rainbow_background;
}

/* Animate from red to green to blue */
@keyframes rainbow_background {
    0% {
        background: #f00;##     }

    50% {
        background: #0f0;##     }

    100% {
        background: #00f;##     }
}

####### util.js

// util.js

import { screen } from 'electron';

export function startVideo() {
    const display = screen.getPrimaryDisplay() // http://electron.atom.io/docs/api/screen

    const constraints = {
        video: {
            width: {
                ideal: display.size.width // Ideal video width is size of screen
            },
            height: {
                ideal: display.size.height // Ideal video height is size of screen
            }
        }
    }

    navigator.mediaDevices.getUserMedia(constraints).then((stream) => {
        const video = document.querySelector('video')
        video.srcObject = stream  // Play stream in <video> element
    }).catch((error) => {
        console.error(error)
    });

    document.getElementById('rainbow-toggle').addEventListener('change', (ev) => {
        const checked = ev.srcElement.checked;

        if (checked) {
            document.querySelector('.rainbow-filter').style.display = 'block';
        } else {
            document.querySelector('.rainbow-filter').style.display = 'none';
        }
    });
}

Build and run the sketch

  • Press the build button at the bottorm right side of the status bar. (Or use ctrl + shift + b).
  • Press the run button at the bottorm right side of the status bar. (Or use ctrl + r).

MIT Licensed | Copyright Β© 2019-present Nishkal Kashyap