Skip to content

ut-issl/procnote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

229 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

procnote

Warning

Procnote is in early development. The CLI interface, template grammar, event log schema, and storage layout are all subject to change without notice.

A procedure execution tool for tracking step-by-step procedures with checkboxes, data inputs, attachments, and notes. Built as an event-sourced Tauri 2 desktop app (Rust backend + Svelte 5 frontend).

Procedures are written as Markdown templates with YAML frontmatter. Each execution replays an append-only event log, ensuring crash safety and full auditability.

Template Syntax

A procedure template is a Markdown file with YAML frontmatter followed by steps defined as ## headings.

Frontmatter

---
id: TVT-001
title: "Thermal Vacuum Test - Reaction Wheel Unit"
version: "1.0"
author: "Nomura" # optional
equipment: # optional
  - id: CHAMBER-A
    name: "Thermal Vacuum Chamber A"
requirement_traces: # optional
  - REQ-RWU-TEMP-001
---

Required fields: id, title, version.

Steps

Each ## heading defines a step. Content within a step can include prose, checkboxes, and input blocks in any order. The order in the template is preserved in the UI.

## Step 1: Power On Sequence

Connect PSU to DUT J1 connector. Set voltage to 5.0V.

Checkboxes

Use Markdown task list syntax for interactive checkboxes:

- [ ] Chamber pressure < 1e-5 Pa
- [ ] DUT temperature stabilized
- [x] Pre-checked item

Constraint: A list must contain only checkbox items to be recognized as interactive checkboxes. If a list mixes regular bullet items with checkbox items, the entire list is treated as prose (rendered as Markdown text, not interactive checkboxes).

<!-- All checkboxes - rendered as interactive checkboxes -->

- [ ] First check
- [ ] Second check

<!-- Mixed list - rendered as prose, NOT interactive checkboxes -->

- A regular bullet point
- [ ] A checkbox item

Input Blocks

Define data-entry fields using a fenced code block with the inputs language tag. The block body is YAML:

```inputs
- id: current-draw
  label: "Measure current draw"
  type: measurement
  unit: "mA"
  expected:
    min: 100
    max: 150
- id: selftest-result
  label: "Self-test response"
  type: selection
  options: ["PASS", "FAIL", "TIMEOUT"]
  expected: "PASS"
- id: log-file
  label: "Attach log file"
  type: attachment
```

Input types:

Type Description
measurement Numeric value with optional unit and expected range
text Free-form text
selection Dropdown from options list, with optional expected value
attachment File upload (stored with SHA-256 hash)

Prose

Any other Markdown content (paragraphs, bullet lists, sub-headings, code blocks, links, etc.) is rendered as-is. Standard Markdown formatting is supported.

Full Example

---
id: TVT-001
title: "Thermal Vacuum Test"
version: "1.0"
---

## Preconditions

- [ ] Chamber pressure < 1e-5 Pa
- [ ] DUT temperature stabilized at 25 deg C

## Step 1: Power On Sequence

Connect PSU to DUT J1 connector. Set voltage to 5.0V. Enable output.

- [ ] Confirm voltage stable

```inputs
- id: current-draw
  label: "Measure current draw"
  type: measurement
  unit: "mA"
  expected:
    min: 100
    max: 150
```

## Postconditions

- [ ] DUT powered off
- [ ] Chamber returned to ambient

Installation

macOS (Homebrew)

brew install --cask shunichironomura/tap/procnote

This installs the app to /Applications/ and creates a procnote CLI command in your PATH.

Note

The macOS builds are not currently code-signed or notarized. After installing, you need to remove the quarantine attribute:

xattr -cr /Applications/procnote.app

Without this, macOS will show a "damaged and can't be opened" error.

Windows / Linux

Note

Windows and Linux distribution is not well organized yet. Download installers manually from the Releases page.

Available artifacts:

  • Windows: .msi and .exe installers
  • Linux: .deb package and .AppImage

Development

Requires Rust, Node.js, pnpm, and just.

# Start development server
just dev

# Run all checks
just check-all

# Run Rust tests
just test

# Generate TypeScript type bindings from Rust
just generate-types

# Format Rust code
just fmt

Architecture

Three layers with strict dependency direction:

  1. crates/procnote-core/ -- Pure Rust domain logic (events, state machine, template parser). No Tauri dependency.
  2. src-tauri/ -- Tauri shell. Bridges core to desktop via IPC commands. Owns serialization DTOs and filesystem I/O.
  3. src/ -- SvelteKit + Svelte 5 frontend.

Executions are stored as append-only JSONL event logs under .executions/.

About

A procedure execution tool for tracking step-by-step procedures with checkboxes, data inputs, attachments, and notes.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

 
 
 

Contributors