docs: publish bilingual product README
This commit is contained in:
parent
a00207d86e
commit
d1f9157c05
433
README.md
433
README.md
|
|
@ -1,208 +1,341 @@
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
<img src="packaging/linux/verstak.svg" width="112" alt="Verstak logo">
|
||||||
|
|
||||||
# Verstak
|
# Verstak
|
||||||
|
|
||||||
Verstak is a local-first workspace for files, notes, browser captures,
|
### Keep the context of your work together — locally.
|
||||||
activity and work-journal entries. This repository is the desktop application:
|
|
||||||
the Go/Wails host and UI shell that loads plugins from a `plugins/` directory
|
|
||||||
next to its executable.
|
|
||||||
|
|
||||||
> **Alpha software.** Use a disposable vault while evaluating it. APIs, storage
|
Files, notes, links, browser captures, activity and work history
|
||||||
> formats and packaging can change before the first stable release.
|
in one extensible local-first workspace.
|
||||||
|
|
||||||
## Components
|
**English** · [Русский](README.ru.md)
|
||||||
|
|
||||||
The public alpha is split into small repositories. Keep their `main` branches
|
[](https://github.com/mirivlad/verstak/releases)
|
||||||
in the same release line when building from source.
|

|
||||||
|

|
||||||
|
[](LICENSE)
|
||||||
|
|
||||||
| Component | Repository | What it is for |
|
[Download](https://github.com/mirivlad/verstak/releases/latest) ·
|
||||||
| --- | --- | --- |
|
[Documentation](https://github.com/mirivlad/verstak-docs) ·
|
||||||
| Desktop | [mirivlad/verstak](https://github.com/mirivlad/verstak) | This application: vault UI, local host and plugin runtime. |
|
[Report an issue](https://github.com/mirivlad/verstak/issues)
|
||||||
| Official plugins | [mirivlad/verstak-official-plugins](https://github.com/mirivlad/verstak-official-plugins) | Files, Notes, Browser Inbox, Activity, Journal, Sync, Todo and other first-party plugins. |
|
|
||||||
| Browser extension | [mirivlad/verstak-browser-extension](https://github.com/mirivlad/verstak-browser-extension) | Manual browser captures and opt-in domain-time activity. |
|
|
||||||
| Sync server | [mirivlad/verstak-sync-server](https://github.com/mirivlad/verstak-sync-server) | Optional self-hosted synchronization between devices. |
|
|
||||||
| Plugin SDK | [mirivlad/verstak-sdk](https://github.com/mirivlad/verstak-sdk) | TypeScript API, JSON schemas and contract tests for plugin authors. |
|
|
||||||
| Architecture documentation | [mirivlad/verstak-docs](https://github.com/mirivlad/verstak-docs) | Product, platform and plugin-system design documents. |
|
|
||||||
|
|
||||||
No server account or browser extension is needed for a local desktop vault.
|
</div>
|
||||||
|
|
||||||
## Build the desktop and official plugins
|
> [!WARNING]
|
||||||
|
> Verstak is currently **alpha software**. APIs, storage formats and packaging may change before the first stable release. Use a test vault and keep backups of important data.
|
||||||
|
|
||||||
To build from source, install Go 1.24+, Node.js 20+ with npm, Python 3, the [Wails v2 build
|
## What is Verstak?
|
||||||
prerequisites](https://wails.io/docs/gettingstarted/installation/), and your
|
|
||||||
distribution's WebKitGTK development package.
|
|
||||||
|
|
||||||
Clone the repositories as siblings. The directory names below are intentional:
|
Verstak is a local-first workbench that keeps the context around your work in one place.
|
||||||
the desktop helper finds the official-plugin checkout at
|
|
||||||
`../verstak-official-plugins`.
|
A **workspace** can represent almost anything:
|
||||||
|
|
||||||
|
* a software project;
|
||||||
|
* a client or customer;
|
||||||
|
* a server or infrastructure site;
|
||||||
|
* a device under repair;
|
||||||
|
* an article or research topic;
|
||||||
|
* a training course;
|
||||||
|
* a personal long-term project.
|
||||||
|
|
||||||
|
Normally, information about such work is scattered across directories, notes, browser tabs, task managers, password managers, terminal history and memory.
|
||||||
|
|
||||||
|
Verstak brings it together in a local **vault** that remains under your control.
|
||||||
|
|
||||||
|
No account, cloud service or sync server is required for local use.
|
||||||
|
|
||||||
|
## Verstak in use
|
||||||
|
|
||||||
|
| Overview: return to a workspace and see its recent work, captures and items that need attention. | Files: manage ordinary folders and documents inside a workspace. |
|
||||||
|
| --- | --- |
|
||||||
|
|  |  |
|
||||||
|
|
||||||
|
| Notes: keep Markdown notes next to the workspace they describe. | Journal: record a completed session and retain its context. |
|
||||||
|
| --- | --- |
|
||||||
|
|  |  |
|
||||||
|
|
||||||
|
## Main features
|
||||||
|
|
||||||
|
| Feature | Description |
|
||||||
|
| ------------------------ | -------------------------------------------------------------------------------------------- |
|
||||||
|
| **Workspaces** | Organize files, notes and activity around durable projects, clients and other areas of work. |
|
||||||
|
| **Files** | Browse and manage ordinary files stored inside your vault. |
|
||||||
|
| **Notes** | Create Markdown notes, overview pages and links between related information. |
|
||||||
|
| **Overview** | Quickly return to recent work and see what may need attention. |
|
||||||
|
| **Browser Inbox** | Send pages, links, selections and files from a browser into Verstak. |
|
||||||
|
| **Activity and Journal** | Reconstruct work sessions and turn selected activity into journal entries. |
|
||||||
|
| **Todo** | Keep optional task lists inside individual workspaces and across the whole vault. |
|
||||||
|
| **Search** | Search across notes, files and supported plugin data. |
|
||||||
|
| **Trash** | Restore deleted items or remove them permanently from one central location. |
|
||||||
|
| **Secrets** | Keep credentials and access information connected to the relevant workspace. |
|
||||||
|
| **Templates** | Create repeatable workspace structures for common types of work. |
|
||||||
|
| **Plugins** | Add, replace or disable tools without turning Verstak into one rigid monolithic application. |
|
||||||
|
| **Optional sync** | Synchronize vaults between devices using a self-hosted Verstak Sync Server. |
|
||||||
|
|
||||||
|
## Download and install
|
||||||
|
|
||||||
|
Download the latest build from the
|
||||||
|
[GitHub Releases page](https://github.com/mirivlad/verstak/releases/latest).
|
||||||
|
|
||||||
|
Release packages already include the matching official plugins.
|
||||||
|
|
||||||
|
| System | Download | Installation |
|
||||||
|
| --------------------------------- | ----------------------------------------- | --------------------------------------------- |
|
||||||
|
| Debian 13 / Ubuntu 24.04 or newer | `verstak_<version>_amd64.deb` | Install through APT. |
|
||||||
|
| Other x86_64 Linux distributions | `verstak-linux-x86_64-<version>.AppImage` | Make the file executable and run it. |
|
||||||
|
| Windows 10/11 x64 | `verstak-windows-amd64-<version>.zip` | Extract the archive and launch `Verstak.cmd`. |
|
||||||
|
|
||||||
|
### Debian and Ubuntu
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install ./verstak_*_amd64.deb
|
||||||
|
```
|
||||||
|
|
||||||
|
Launch Verstak from the application menu or run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
verstak
|
||||||
|
```
|
||||||
|
|
||||||
|
### AppImage
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chmod +x verstak-linux-x86_64-*.AppImage
|
||||||
|
./verstak-linux-x86_64-*.AppImage
|
||||||
|
```
|
||||||
|
|
||||||
|
On a system without FUSE support:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
APPIMAGE_EXTRACT_AND_RUN=1 ./verstak-linux-x86_64-*.AppImage
|
||||||
|
```
|
||||||
|
|
||||||
|
### Windows portable version
|
||||||
|
|
||||||
|
1. Download `verstak-windows-amd64-<version>.zip`.
|
||||||
|
2. Extract it to a local directory.
|
||||||
|
3. Run `Verstak.cmd`.
|
||||||
|
|
||||||
|
Do not run Verstak directly from inside the ZIP archive or from a network share.
|
||||||
|
|
||||||
|
Verstak uses the Microsoft WebView2 Runtime. It is already included with Windows 11 and most current Windows 10 installations. If Verstak does not start, install the
|
||||||
|
[Microsoft WebView2 Runtime x64](https://go.microsoft.com/fwlink/p/?LinkId=2124701).
|
||||||
|
|
||||||
|
## Background and tray mode
|
||||||
|
|
||||||
|
Closing the main window keeps Verstak running in the system tray. Use **Show Verstak** to bring it back and **Quit** to exit the application completely. This lets scheduled Todo reminders continue while the window is hidden.
|
||||||
|
|
||||||
|
### Verify a download
|
||||||
|
|
||||||
|
Each release includes a `SHA256SUMS` file.
|
||||||
|
|
||||||
|
On Linux:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sha256sum -c SHA256SUMS --ignore-missing
|
||||||
|
```
|
||||||
|
|
||||||
|
## First start
|
||||||
|
|
||||||
|
### 1. Create or open a vault
|
||||||
|
|
||||||
|
A **vault** is the root directory where Verstak stores your work.
|
||||||
|
|
||||||
|
Choose a writable local directory. For example:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Documents/
|
||||||
|
└── Verstak/
|
||||||
|
```
|
||||||
|
|
||||||
|
Your files and notes remain ordinary files that can be accessed without Verstak.
|
||||||
|
|
||||||
|
### 2. Create your first workspace
|
||||||
|
|
||||||
|
Inside the vault, create a workspace for a project, client, server, device or another area of work.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Home server
|
||||||
|
Customer Alpha
|
||||||
|
Verstak development
|
||||||
|
3D printer
|
||||||
|
Training course
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Add context
|
||||||
|
|
||||||
|
Open the workspace and add the information needed to return to it later:
|
||||||
|
|
||||||
|
* notes and decisions;
|
||||||
|
* documents and source files;
|
||||||
|
* useful links;
|
||||||
|
* access information;
|
||||||
|
* journal entries;
|
||||||
|
* tasks;
|
||||||
|
* materials captured from the browser.
|
||||||
|
|
||||||
|
### 4. Return through Overview
|
||||||
|
|
||||||
|
The Overview screen shows recent changes, unfinished captures, activity and other useful entry points back into your work.
|
||||||
|
|
||||||
|
## How Verstak stores data
|
||||||
|
|
||||||
|
Verstak follows several principles:
|
||||||
|
|
||||||
|
* your vault is local and works without an account or internet connection;
|
||||||
|
* files and notes remain readable outside the application;
|
||||||
|
* synchronization is optional and is not the source of truth;
|
||||||
|
* the user should understand where data is stored and what happens to it;
|
||||||
|
* application tools are provided by plugins rather than being permanently embedded into the core.
|
||||||
|
|
||||||
|
The desktop application loads plugins from a `plugins/` directory located beside the executable.
|
||||||
|
|
||||||
|
## Browser integration
|
||||||
|
|
||||||
|
The optional browser extension can send the following into Browser Inbox:
|
||||||
|
|
||||||
|
* the current page;
|
||||||
|
* selected text;
|
||||||
|
* a link;
|
||||||
|
* a downloaded or selected file.
|
||||||
|
|
||||||
|
Repository:
|
||||||
|
|
||||||
|
[mirivlad/verstak-browser-extension](https://github.com/mirivlad/verstak-browser-extension)
|
||||||
|
|
||||||
|
To connect the extension:
|
||||||
|
|
||||||
|
1. Open Browser Inbox settings in Verstak.
|
||||||
|
2. Copy the Receiver URL and Pairing Token.
|
||||||
|
3. Paste them into the extension settings.
|
||||||
|
4. Save the settings and send a test page.
|
||||||
|
|
||||||
|
Passive domain activity tracking is disabled by default. When enabled, it sends bounded time totals by normalized domain. It does not send page contents, keystrokes or full browsing history.
|
||||||
|
|
||||||
|
## Optional synchronization
|
||||||
|
|
||||||
|
Local use does not require a server.
|
||||||
|
|
||||||
|
For synchronization between devices, deploy the optional self-hosted
|
||||||
|
[Verstak Sync Server](https://github.com/mirivlad/verstak-sync-server).
|
||||||
|
|
||||||
|
Each vault is connected separately. The local vault remains the primary copy of your data.
|
||||||
|
|
||||||
|
## Build from source
|
||||||
|
|
||||||
|
### Requirements
|
||||||
|
|
||||||
|
* Go 1.24 or newer;
|
||||||
|
* Node.js 20 or newer with npm;
|
||||||
|
* Python 3;
|
||||||
|
* Git;
|
||||||
|
* Wails v2 build dependencies;
|
||||||
|
* WebKitGTK development packages on Linux.
|
||||||
|
* Ayatana AppIndicator development files on Linux (`sudo apt install libayatana-appindicator3-dev`).
|
||||||
|
|
||||||
|
See the
|
||||||
|
[Wails installation documentation](https://wails.io/docs/gettingstarted/installation/)
|
||||||
|
for distribution-specific dependencies.
|
||||||
|
|
||||||
|
### Clone the repositories
|
||||||
|
|
||||||
|
The desktop, SDK and official plugin repositories must be cloned as sibling directories:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
verstak-workspace/
|
verstak-workspace/
|
||||||
├── verstak/
|
├── verstak/
|
||||||
├── verstak-sdk/
|
├── verstak-sdk/
|
||||||
├── verstak-official-plugins/
|
└── verstak-official-plugins/
|
||||||
└── verstak-browser-extension/ # optional for browser integration
|
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/mirivlad/verstak.git verstak
|
mkdir verstak-workspace
|
||||||
git clone https://github.com/mirivlad/verstak-sdk.git verstak-sdk
|
cd verstak-workspace
|
||||||
git clone https://github.com/mirivlad/verstak-official-plugins.git verstak-official-plugins
|
|
||||||
git clone https://github.com/mirivlad/verstak-browser-extension.git verstak-browser-extension
|
git clone https://github.com/mirivlad/verstak.git
|
||||||
|
git clone https://github.com/mirivlad/verstak-sdk.git
|
||||||
|
git clone https://github.com/mirivlad/verstak-official-plugins.git
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd verstak-sdk
|
||||||
|
./scripts/build.sh
|
||||||
|
|
||||||
|
cd ../verstak-official-plugins
|
||||||
|
./scripts/build.sh
|
||||||
|
|
||||||
cd verstak-sdk && ./scripts/build.sh
|
|
||||||
cd ../verstak-official-plugins && ./scripts/build.sh
|
|
||||||
cd ../verstak
|
cd ../verstak
|
||||||
./scripts/install-dev-plugins.sh
|
./scripts/install-dev-plugins.sh
|
||||||
./scripts/build.sh
|
./scripts/build.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
`install-dev-plugins.sh` copies the packages from
|
The resulting application will be located at:
|
||||||
`../verstak-official-plugins/dist/` into this repository's `plugins/`
|
|
||||||
directory. `build.sh` then copies them to `build/bin/plugins/`, beside the
|
|
||||||
desktop executable:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./build/bin/verstak-desktop
|
./build/bin/verstak-desktop
|
||||||
```
|
```
|
||||||
|
|
||||||
For a manually assembled installation, place each unpacked plugin directory
|
Run it with additional diagnostics:
|
||||||
directly in `plugins/` beside `verstak-desktop`; for example,
|
|
||||||
`plugins/browser-inbox/plugin.json`. Do not put the release archive itself in
|
|
||||||
that directory. The desktop release archive already includes its matching
|
|
||||||
`plugins/` directory.
|
|
||||||
|
|
||||||
Start with `--debug` to show internal plugin-provider identifiers and write
|
|
||||||
diagnostic logs:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./build/bin/verstak-desktop --debug
|
./build/bin/verstak-desktop --debug
|
||||||
```
|
```
|
||||||
|
|
||||||
## Portable test artifacts
|
## Build release packages locally
|
||||||
|
|
||||||
These commands make local alpha artifacts in `release/`. They do not create a
|
These commands create local artifacts in `release/`. They do not publish a GitHub Release.
|
||||||
GitHub Release.
|
|
||||||
|
### Debian package
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Debian 13 / Ubuntu 24.04 or later. APT installs WebKitGTK dependencies.
|
|
||||||
./scripts/package-deb.sh v0.1.0-alpha.1
|
./scripts/package-deb.sh v0.1.0-alpha.1
|
||||||
|
```
|
||||||
|
|
||||||
# Portable Linux x86_64 AppImage with bundled WebKitGTK runtime and plugins.
|
### AppImage
|
||||||
|
|
||||||
|
```bash
|
||||||
./scripts/package-appimage.sh v0.1.0-alpha.1
|
./scripts/package-appimage.sh v0.1.0-alpha.1
|
||||||
```
|
```
|
||||||
|
|
||||||
Install the Debian package with `sudo apt install ./release/verstak_*.deb`,
|
### Windows portable ZIP
|
||||||
then launch `verstak`. Run the AppImage directly after making it executable:
|
|
||||||
|
|
||||||
```bash
|
The Windows archive can be cross-compiled on Linux using MinGW:
|
||||||
chmod +x release/verstak-linux-x86_64-v0.1.0-alpha.1.AppImage
|
|
||||||
./release/verstak-linux-x86_64-v0.1.0-alpha.1.AppImage
|
|
||||||
```
|
|
||||||
|
|
||||||
On distributions without FUSE support, use
|
|
||||||
`APPIMAGE_EXTRACT_AND_RUN=1 ./release/verstak-linux-x86_64-v0.1.0-alpha.1.AppImage`.
|
|
||||||
|
|
||||||
Build the Windows portable ZIP on Linux with MinGW:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt install gcc-mingw-w64-x86-64 zip
|
sudo apt install gcc-mingw-w64-x86-64 zip
|
||||||
./scripts/package-windows-portable.sh v0.1.0-alpha.1
|
./scripts/package-windows-portable.sh v0.1.0-alpha.1
|
||||||
```
|
```
|
||||||
|
|
||||||
The ZIP uses the x64 Evergreen Microsoft WebView2 Runtime installed in Windows
|
## Project repositories
|
||||||
and writes `release/verstak-windows-amd64-<version>.zip`. Extract it to a local
|
|
||||||
disk (not a network share) and launch `Verstak.cmd`. Windows 11 and most
|
|
||||||
Windows 10 installations already include this runtime. If Verstak does not
|
|
||||||
start, install the official [Microsoft WebView2 Runtime x64 standalone
|
|
||||||
installer](https://go.microsoft.com/fwlink/p/?LinkId=2124701), then launch it
|
|
||||||
again.
|
|
||||||
|
|
||||||
Each format is listed in `release/SHA256SUMS` after packaging.
|
| Repository | Purpose |
|
||||||
|
| ---------------------------------------------------------------------------------- | ------------------------------------------------------ |
|
||||||
|
| [verstak](https://github.com/mirivlad/verstak) | Desktop application, core platform and UI shell |
|
||||||
|
| [verstak-official-plugins](https://github.com/mirivlad/verstak-official-plugins) | Official Files, Notes, Journal, Todo and other plugins |
|
||||||
|
| [verstak-sdk](https://github.com/mirivlad/verstak-sdk) | TypeScript SDK, schemas and plugin contracts |
|
||||||
|
| [verstak-browser-extension](https://github.com/mirivlad/verstak-browser-extension) | Browser capture and optional activity integration |
|
||||||
|
| [verstak-sync-server](https://github.com/mirivlad/verstak-sync-server) | Optional self-hosted synchronization server |
|
||||||
|
| [verstak-docs](https://github.com/mirivlad/verstak-docs) | Product and platform architecture documentation |
|
||||||
|
|
||||||
## First local vault
|
Compatible components should be built from the same release line.
|
||||||
|
|
||||||
1. Launch the desktop application and choose or create a writable vault folder.
|
## Development status
|
||||||
Verstak stores its local metadata in that vault; do not point it at a
|
|
||||||
read-only directory.
|
|
||||||
2. Create a Дело (workspace) in the Files plugin before assigning captures or
|
|
||||||
activity to it.
|
|
||||||
3. Open Notes, Files, Activity and Journal as needed. Activity candidates are
|
|
||||||
only suggestions: a Journal entry and a new Дело are always created by the
|
|
||||||
user.
|
|
||||||
|
|
||||||
## Browser extension
|
Verstak is under active development.
|
||||||
|
|
||||||
The extension is optional. Build it locally with `npm ci && npm test && npm run
|
The current alpha is intended for testing, feedback and experimentation. Backward compatibility is not guaranteed until the first stable release.
|
||||||
build` in `verstak-browser-extension/`, then load `dist/chromium` as an
|
|
||||||
unpacked Chromium extension or `dist/firefox` temporarily in Firefox. A signed
|
|
||||||
Firefox XPI is available from the [extension's GitHub
|
|
||||||
Releases](https://github.com/mirivlad/verstak-browser-extension/releases).
|
|
||||||
|
|
||||||
To connect it to the desktop application:
|
Bug reports and feature discussions are welcome in
|
||||||
|
[GitHub Issues](https://github.com/mirivlad/verstak/issues).
|
||||||
1. Ensure the `browser-inbox` plugin is installed and open its settings in
|
|
||||||
Verstak.
|
|
||||||
2. Copy the displayed Receiver URL and Pairing Token.
|
|
||||||
3. Paste both values into the extension's settings and save.
|
|
||||||
4. Use a manual Send Page, selection, link or file action to create a Browser
|
|
||||||
Inbox capture.
|
|
||||||
|
|
||||||
Passive domain activity is disabled by default. When the user explicitly turns
|
|
||||||
it on, the extension sends only bounded time totals by normalized domain. It
|
|
||||||
does not send URLs, page titles, page contents, keystrokes, navigation history
|
|
||||||
or inactive-tab time. The extension settings provide a domain exclusion list.
|
|
||||||
|
|
||||||
## Optional sync server
|
|
||||||
|
|
||||||
The sync server is self-hosted and is not required for local use. Build and
|
|
||||||
start a development instance from a sibling checkout:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/mirivlad/verstak-sync-server.git verstak-sync-server
|
|
||||||
cd verstak-sync-server
|
|
||||||
./scripts/build.sh
|
|
||||||
./build/bin/verstak-sync-server --port 47732 --data ./server-data \
|
|
||||||
--admin-user admin --admin-pass 'choose-a-strong-password'
|
|
||||||
```
|
|
||||||
|
|
||||||
For a second device or a production host, follow the deployment, HTTPS and
|
|
||||||
backup guidance in the [sync server
|
|
||||||
README](https://github.com/mirivlad/verstak-sync-server#readme). In the desktop
|
|
||||||
application, open the Sync plugin, enter the server URL and user credentials,
|
|
||||||
test the connection, then select **Connect**. Each vault is paired separately.
|
|
||||||
|
|
||||||
## Separate plugin archives
|
|
||||||
|
|
||||||
The desktop artifacts already include matching official plugins. To distribute
|
|
||||||
plugins separately, build OS-specific archives in the sibling repository:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd ../verstak-official-plugins
|
|
||||||
sudo apt install gcc-mingw-w64-x86-64 zip
|
|
||||||
./scripts/package-portable.sh v0.1.0-alpha.1
|
|
||||||
```
|
|
||||||
|
|
||||||
It writes a Linux `tar.gz` and a Windows ZIP. Both archives expand directly
|
|
||||||
into the `plugins/` directory beside the corresponding desktop executable.
|
|
||||||
Separate archives are required because `platform-test` includes a native
|
|
||||||
sidecar for its target OS.
|
|
||||||
|
|
||||||
## Publish a GitHub Release
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./scripts/publish-github-release.sh v0.1.0-alpha.1
|
|
||||||
```
|
|
||||||
|
|
||||||
The command requires an authenticated [`gh`](https://cli.github.com/) CLI, a
|
|
||||||
clean local `main` equal to `origin/main`, and the sibling official-plugins
|
|
||||||
checkout. It builds the Debian package, Linux AppImage and Windows portable
|
|
||||||
ZIP, then creates or updates the GitHub Release with those three artifacts and
|
|
||||||
`SHA256SUMS`. Alpha, beta and release-candidate tags are marked as GitHub
|
|
||||||
prereleases; stable tags are marked latest. The command creates an annotated
|
|
||||||
tag when needed and pushes it through `origin`, which also mirrors tags in this
|
|
||||||
checkout. Publish the compatible official-plugins release before the desktop
|
|
||||||
release that embeds those plugins.
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Copyright © 2026 Verstak contributors. Licensed under
|
Copyright © 2026 Verstak contributors.
|
||||||
[GNU AGPLv3 or later](LICENSE).
|
|
||||||
|
Verstak is licensed under the
|
||||||
|
[GNU Affero General Public License v3.0 or later](LICENSE).
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,340 @@
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
<img src="packaging/linux/verstak.svg" width="112" alt="Логотип Верстака">
|
||||||
|
|
||||||
|
# Верстак
|
||||||
|
|
||||||
|
### Рабочий контекст остаётся рядом — и хранится локально.
|
||||||
|
|
||||||
|
Файлы, заметки, ссылки, материалы из браузера, активность и история работы
|
||||||
|
в одном расширяемом рабочем пространстве.
|
||||||
|
|
||||||
|
[English](README.md) · **Русский**
|
||||||
|
|
||||||
|
[](https://github.com/mirivlad/verstak/releases)
|
||||||
|

|
||||||
|

|
||||||
|
[](LICENSE)
|
||||||
|
|
||||||
|
[Скачать](https://github.com/mirivlad/verstak/releases/latest) ·
|
||||||
|
[Документация](https://github.com/mirivlad/verstak-docs) ·
|
||||||
|
[Сообщить о проблеме](https://github.com/mirivlad/verstak/issues)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Верстак пока находится на стадии **alpha**. До первого стабильного выпуска могут меняться API, форматы хранения и состав пакетов. Для знакомства используйте тестовый vault и сохраняйте резервные копии важных данных.
|
||||||
|
|
||||||
|
## Что такое Верстак
|
||||||
|
|
||||||
|
Верстак — это local-first рабочая среда, которая удерживает в одном месте контекст вокруг ваших дел.
|
||||||
|
|
||||||
|
**Делом** может быть что угодно:
|
||||||
|
|
||||||
|
* программный проект;
|
||||||
|
* клиент или заказчик;
|
||||||
|
* сервер или площадка;
|
||||||
|
* ремонтируемое устройство;
|
||||||
|
* статья или исследование;
|
||||||
|
* учебный курс;
|
||||||
|
* личный долгосрочный проект.
|
||||||
|
|
||||||
|
Обычно информация о таком деле расползается по папкам, заметкам, браузерным вкладкам, менеджерам задач, хранилищам паролей, истории терминала и памяти.
|
||||||
|
|
||||||
|
Верстак собирает её в один локальный **vault**, который остаётся под вашим контролем.
|
||||||
|
|
||||||
|
Для локальной работы не нужны учётная запись, облачный сервис или собственный сервер.
|
||||||
|
|
||||||
|
## Верстак в работе
|
||||||
|
|
||||||
|
| Обзор: возвращает к делу и показывает недавнюю работу, входящие и то, что требует внимания. | Файлы: обычные папки и документы прямо внутри дела. |
|
||||||
|
| --- | --- |
|
||||||
|
|  |  |
|
||||||
|
|
||||||
|
| Заметки: Markdown-заметки остаются рядом с делом, которое они описывают. | Журнал: фиксирует завершённую работу и её контекст. |
|
||||||
|
| --- | --- |
|
||||||
|
|  |  |
|
||||||
|
|
||||||
|
## Основные возможности
|
||||||
|
|
||||||
|
| Возможность | Что она даёт |
|
||||||
|
| ------------------------ | ---------------------------------------------------------------------------------------------- |
|
||||||
|
| **Дела** | Объединяют файлы, заметки и историю работы вокруг проектов, клиентов и других направлений. |
|
||||||
|
| **Файлы** | Позволяют работать с обычными файлами, расположенными внутри vault. |
|
||||||
|
| **Заметки** | Markdown-заметки, обзорные страницы и связи между материалами. |
|
||||||
|
| **Обзор** | Помогает быстро вернуться к недавней работе и увидеть то, что требует внимания. |
|
||||||
|
| **Входящие из браузера** | Принимают страницы, ссылки, выделенный текст и файлы из браузера. |
|
||||||
|
| **Активность и журнал** | Помогают восстановить рабочие сессии и превратить выбранную активность в записи журнала. |
|
||||||
|
| **Задачи** | Необязательные списки задач внутри отдельных дел и во всём vault. |
|
||||||
|
| **Поиск** | Ищет по заметкам, файлам и данным поддерживаемых плагинов. |
|
||||||
|
| **Корзина** | Позволяет восстановить удалённое или окончательно удалить его из одного общего раздела. |
|
||||||
|
| **Секреты** | Хранит доступы и учётные данные рядом с делом, к которому они относятся. |
|
||||||
|
| **Шаблоны** | Создают повторяемую структуру для однотипных дел. |
|
||||||
|
| **Плагины** | Позволяют добавлять, заменять и отключать инструменты, не превращая Верстак в жёсткий монолит. |
|
||||||
|
| **Синхронизация** | Необязательно синхронизирует vault между устройствами через собственный сервер. |
|
||||||
|
|
||||||
|
## Скачивание и установка
|
||||||
|
|
||||||
|
Готовые сборки находятся на странице
|
||||||
|
[GitHub Releases](https://github.com/mirivlad/verstak/releases/latest).
|
||||||
|
|
||||||
|
В релизные пакеты уже входят совместимые версии официальных плагинов. Устанавливать их отдельно не требуется.
|
||||||
|
|
||||||
|
| Система | Какой файл скачать | Как установить |
|
||||||
|
| -------------------------------- | ---------------------------------------- | -------------------------------------------- |
|
||||||
|
| Debian 13 / Ubuntu 24.04 и новее | `verstak_<версия>_amd64.deb` | Установить через APT. |
|
||||||
|
| Другие дистрибутивы Linux x86_64 | `verstak-linux-x86_64-<версия>.AppImage` | Сделать файл исполняемым и запустить. |
|
||||||
|
| Windows 10/11 x64 | `verstak-windows-amd64-<версия>.zip` | Распаковать архив и запустить `Verstak.cmd`. |
|
||||||
|
|
||||||
|
### Debian и Ubuntu
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install ./verstak_*_amd64.deb
|
||||||
|
```
|
||||||
|
|
||||||
|
После установки запустите Верстак из меню приложений или командой:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
verstak
|
||||||
|
```
|
||||||
|
|
||||||
|
### AppImage
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chmod +x verstak-linux-x86_64-*.AppImage
|
||||||
|
./verstak-linux-x86_64-*.AppImage
|
||||||
|
```
|
||||||
|
|
||||||
|
Если в системе нет поддержки FUSE:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
APPIMAGE_EXTRACT_AND_RUN=1 ./verstak-linux-x86_64-*.AppImage
|
||||||
|
```
|
||||||
|
|
||||||
|
### Портативная версия для Windows
|
||||||
|
|
||||||
|
1. Скачайте `verstak-windows-amd64-<версия>.zip`.
|
||||||
|
2. Распакуйте архив в локальную папку.
|
||||||
|
3. Запустите `Verstak.cmd`.
|
||||||
|
|
||||||
|
Не запускайте Верстак прямо из ZIP-архива или с сетевого диска.
|
||||||
|
|
||||||
|
Верстак использует Microsoft WebView2 Runtime. Он уже присутствует в Windows 11 и большинстве актуальных установок Windows 10. Если приложение не запускается, установите
|
||||||
|
[Microsoft WebView2 Runtime x64](https://go.microsoft.com/fwlink/p/?LinkId=2124701).
|
||||||
|
|
||||||
|
## Фоновая работа и трей
|
||||||
|
|
||||||
|
Закрытие главного окна не завершает Верстак: приложение остаётся в системном трее. Выберите **Show Verstak**, чтобы вернуть окно, или **Quit**, чтобы полностью завершить приложение. Благодаря этому напоминания Todo продолжают работать, пока окно скрыто.
|
||||||
|
|
||||||
|
### Проверка скачанного файла
|
||||||
|
|
||||||
|
В каждый релиз входит файл `SHA256SUMS`.
|
||||||
|
|
||||||
|
Проверка в Linux:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sha256sum -c SHA256SUMS --ignore-missing
|
||||||
|
```
|
||||||
|
|
||||||
|
## Первый запуск
|
||||||
|
|
||||||
|
### 1. Создайте или откройте vault
|
||||||
|
|
||||||
|
**Vault** — это корневая папка, в которой Верстак хранит ваши дела.
|
||||||
|
|
||||||
|
Выберите доступный для записи локальный каталог. Например:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Документы/
|
||||||
|
└── Верстак/
|
||||||
|
```
|
||||||
|
|
||||||
|
Файлы и заметки остаются обычными файлами. Их можно открыть и без Верстака.
|
||||||
|
|
||||||
|
### 2. Создайте первое дело
|
||||||
|
|
||||||
|
Внутри vault создайте дело для проекта, клиента, сервера, устройства или другого направления работы.
|
||||||
|
|
||||||
|
Например:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Домашний сервер
|
||||||
|
Заказчик Альфа
|
||||||
|
Разработка Верстака
|
||||||
|
3D-принтер
|
||||||
|
Учебный курс
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Соберите контекст
|
||||||
|
|
||||||
|
Добавьте в дело всё, что поможет вернуться к нему через неделю, месяц или год:
|
||||||
|
|
||||||
|
* заметки и принятые решения;
|
||||||
|
* документы и исходные файлы;
|
||||||
|
* полезные ссылки;
|
||||||
|
* данные для доступа;
|
||||||
|
* записи журнала;
|
||||||
|
* задачи;
|
||||||
|
* материалы, отправленные из браузера.
|
||||||
|
|
||||||
|
### 4. Возвращайтесь через Обзор
|
||||||
|
|
||||||
|
Экран «Обзор» показывает недавние изменения, необработанные входящие, активность и другие подходящие точки для продолжения работы.
|
||||||
|
|
||||||
|
## Как Верстак хранит данные
|
||||||
|
|
||||||
|
Верстак придерживается нескольких принципов:
|
||||||
|
|
||||||
|
* vault хранится локально и доступен без учётной записи и интернета;
|
||||||
|
* файлы и заметки остаются читаемыми вне приложения;
|
||||||
|
* синхронизация является дополнением, а не источником истины;
|
||||||
|
* пользователь должен понимать, где находятся его данные и что с ними происходит;
|
||||||
|
* инструменты реализуются плагинами, а не навсегда встраиваются в ядро.
|
||||||
|
|
||||||
|
Настольное приложение загружает плагины из каталога `plugins/`, расположенного рядом с исполняемым файлом.
|
||||||
|
|
||||||
|
## Интеграция с браузером
|
||||||
|
|
||||||
|
Необязательное расширение позволяет отправлять во «Входящие из браузера»:
|
||||||
|
|
||||||
|
* текущую страницу;
|
||||||
|
* выделенный текст;
|
||||||
|
* ссылку;
|
||||||
|
* выбранный или скачанный файл.
|
||||||
|
|
||||||
|
Репозиторий расширения:
|
||||||
|
|
||||||
|
[mirivlad/verstak-browser-extension](https://github.com/mirivlad/verstak-browser-extension)
|
||||||
|
|
||||||
|
Чтобы подключить расширение:
|
||||||
|
|
||||||
|
1. Откройте настройки «Входящих из браузера» в Верстаке.
|
||||||
|
2. Скопируйте адрес приёмника и токен сопряжения.
|
||||||
|
3. Вставьте их в настройки расширения.
|
||||||
|
4. Сохраните настройки и отправьте тестовую страницу.
|
||||||
|
|
||||||
|
Пассивный учёт активности по доменам по умолчанию отключён. После включения расширение передаёт только ограниченные интервалы времени для нормализованных доменов. Оно не отправляет содержимое страниц, нажатия клавиш или полную историю посещений.
|
||||||
|
|
||||||
|
## Необязательная синхронизация
|
||||||
|
|
||||||
|
Для локального использования сервер не нужен.
|
||||||
|
|
||||||
|
Для синхронизации между устройствами можно развернуть собственный
|
||||||
|
[Verstak Sync Server](https://github.com/mirivlad/verstak-sync-server).
|
||||||
|
|
||||||
|
Каждый vault подключается отдельно. Основной копией данных остаётся локальный vault.
|
||||||
|
|
||||||
|
## Сборка из исходного кода
|
||||||
|
|
||||||
|
### Требования
|
||||||
|
|
||||||
|
* Go 1.24 или новее;
|
||||||
|
* Node.js 20 или новее и npm;
|
||||||
|
* Python 3;
|
||||||
|
* Git;
|
||||||
|
* зависимости для сборки Wails v2;
|
||||||
|
* пакеты разработки WebKitGTK в Linux.
|
||||||
|
* файлы разработки Ayatana AppIndicator в Linux (`sudo apt install libayatana-appindicator3-dev`).
|
||||||
|
|
||||||
|
Зависимости для конкретного дистрибутива перечислены в
|
||||||
|
[документации Wails](https://wails.io/docs/gettingstarted/installation/).
|
||||||
|
|
||||||
|
### Клонирование репозиториев
|
||||||
|
|
||||||
|
Desktop, SDK и официальные плагины должны находиться в соседних каталогах:
|
||||||
|
|
||||||
|
```text
|
||||||
|
verstak-workspace/
|
||||||
|
├── verstak/
|
||||||
|
├── verstak-sdk/
|
||||||
|
└── verstak-official-plugins/
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir verstak-workspace
|
||||||
|
cd verstak-workspace
|
||||||
|
|
||||||
|
git clone https://github.com/mirivlad/verstak.git
|
||||||
|
git clone https://github.com/mirivlad/verstak-sdk.git
|
||||||
|
git clone https://github.com/mirivlad/verstak-official-plugins.git
|
||||||
|
```
|
||||||
|
|
||||||
|
### Сборка
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd verstak-sdk
|
||||||
|
./scripts/build.sh
|
||||||
|
|
||||||
|
cd ../verstak-official-plugins
|
||||||
|
./scripts/build.sh
|
||||||
|
|
||||||
|
cd ../verstak
|
||||||
|
./scripts/install-dev-plugins.sh
|
||||||
|
./scripts/build.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Готовое приложение появится по адресу:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./build/bin/verstak-desktop
|
||||||
|
```
|
||||||
|
|
||||||
|
Запуск с дополнительной диагностикой:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./build/bin/verstak-desktop --debug
|
||||||
|
```
|
||||||
|
|
||||||
|
## Локальная сборка релизных пакетов
|
||||||
|
|
||||||
|
Следующие команды создают пакеты в каталоге `release/`, но не публикуют GitHub Release.
|
||||||
|
|
||||||
|
### Пакет Debian
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/package-deb.sh v0.1.0-alpha.1
|
||||||
|
```
|
||||||
|
|
||||||
|
### AppImage
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/package-appimage.sh v0.1.0-alpha.1
|
||||||
|
```
|
||||||
|
|
||||||
|
### Портативный ZIP для Windows
|
||||||
|
|
||||||
|
Windows-версию можно собрать в Linux при помощи MinGW:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install gcc-mingw-w64-x86-64 zip
|
||||||
|
./scripts/package-windows-portable.sh v0.1.0-alpha.1
|
||||||
|
```
|
||||||
|
|
||||||
|
## Репозитории проекта
|
||||||
|
|
||||||
|
| Репозиторий | Назначение |
|
||||||
|
| ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
|
||||||
|
| [verstak](https://github.com/mirivlad/verstak) | Настольное приложение, ядро платформы и оболочка интерфейса |
|
||||||
|
| [verstak-official-plugins](https://github.com/mirivlad/verstak-official-plugins) | Официальные плагины файлов, заметок, журнала, задач и других инструментов |
|
||||||
|
| [verstak-sdk](https://github.com/mirivlad/verstak-sdk) | TypeScript SDK, схемы и контракты плагинов |
|
||||||
|
| [verstak-browser-extension](https://github.com/mirivlad/verstak-browser-extension) | Отправка материалов из браузера и необязательный учёт активности |
|
||||||
|
| [verstak-sync-server](https://github.com/mirivlad/verstak-sync-server) | Необязательный собственный сервер синхронизации |
|
||||||
|
| [verstak-docs](https://github.com/mirivlad/verstak-docs) | Продуктовая и архитектурная документация |
|
||||||
|
|
||||||
|
Совместимые компоненты следует собирать из одной релизной линии.
|
||||||
|
|
||||||
|
## Состояние разработки
|
||||||
|
|
||||||
|
Верстак активно развивается.
|
||||||
|
|
||||||
|
Текущая alpha предназначена для тестирования, обратной связи и экспериментов. До первого стабильного выпуска обратная совместимость не гарантируется.
|
||||||
|
|
||||||
|
Сообщения об ошибках и предложения принимаются в
|
||||||
|
[GitHub Issues](https://github.com/mirivlad/verstak/issues).
|
||||||
|
|
||||||
|
## Лицензия
|
||||||
|
|
||||||
|
Copyright © 2026 Verstak contributors.
|
||||||
|
|
||||||
|
Верстак распространяется на условиях
|
||||||
|
[GNU Affero General Public License v3.0 или новее](LICENSE).
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 51 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 118 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 61 KiB |
Loading…
Reference in New Issue