Repository navigation
Releases: Smart-Contract-Modelling-uOttawa/SymboleoAC-Web
Release list
SymboleoAC-Web v1.1.0
SymboleoAC-Web 1.1.0 compares two versions of a contract in text and in meaning, keeps the language-server session alive, lets you pick an editor theme, and wears the SymboleoAC brand.
Try it: https://smart-contract-modelling-uottawa.github.io/SymboleoAC-Web/
Compare two versions (#15)
Pick a baseline in the Compare… menu (a snapshot of the current text, or a file), then:
- Text diff: the Diff button shows baseline and current side by side; the right-hand side is the live editor, so diagnostics and completion keep working. The editor gutter marks added, modified and deleted lines.
- Changes in meaning in the Explain tab: norms added, removed, renamed and changed, slot by slot and in the same words as the explanations; declarations, parameters, domain types and access rules that differ; overview slots that differ. Renames are detected on the normalized model, and formatting or comment edits count for nothing, since models are compared rather than text.
- In place: badges on the norm blocks and inline marks in the fact sheet; in the Gherkin style, a changed norm shows its baseline steps struck through (
−) and its new steps marked (+), and the Changes block names the scenarios that changed, were added or were removed. - Outline and diagrams: A / M / R markers and struck-through removed entries in the Outline; a Changes toggle in the Domain, Rules and Policy views that dims what is unchanged, outlines what is new in white, draws what was removed as dashed grey ghosts and badges what changed, without touching the views' own colours.
- Exports: Copy change note (Markdown) and a "Changes since " section, badges and marked Gherkin steps in the documentation export.
Language server kept alive and reconnected
Diagnostics, completion, navigation and semantic colouring used to vanish for good once the language-server session ended (idle timeout after 10 minutes, a redeploy, a network hiccup), because the client library's restart hook never fires. A visible tab now sends a heartbeat the bridge counts as activity without forwarding it to the JVM, and the client reconnects automatically, with backoff and as soon as a hidden tab becomes visible again. A toolbar indicator shows the connection state.
Themes and branding
- Four editor themes in the toolbar: SymboleoAC dark (default), SymboleoAC vivid, SymboleoAC light, Plain dark. The choice is remembered, the ↻ button re-applies it, and the documentation export colours the specification with the selected theme.
- The SymboleoAC lockup replaces the textual title; favicon, touch icon and web manifest are in place. Brand assets:
web/public/brand(app) anddocs/brand(README, social preview).
Assets
symboleoac-language-server-1.1.0-all.jar: the Xtext language server (LSP over stdio):java -jar symboleoac-language-server-1.1.0-all.jar. JDK 17+.symboleoac-codegen-cli-1.1.0-all.jar: headless JavaScript generator and model extractor:java -jar symboleoac-codegen-cli-1.1.0-all.jar --in spec.symboleo(--modeladds the structured and explanation model). JDK 17+.VaccineProcurementC-documentation.html: the documentation generated for the VaccineProcurement sample; open offline.
The jars are unchanged in behaviour since 1.0.0 (version bump only); the Docker image builds them itself. Vendored SymboleoAC-IDE at commit dec00792.
Full details: CHANGELOG.md.
SymboleoAC-Web v1.0.0
First public release of SymboleoAC-Web, a browser IDE for the SymboleoAC smart-legal-contract language: the same Xtext engine as the Eclipse plugin, plus derived views, plain-language explanations, and a documentation export. Nothing to install.
Try it: https://smart-contract-modelling-uottawa.github.io/SymboleoAC-Web/
Sample report: https://smart-contract-modelling-uottawa.github.io/SymboleoAC-Web/docs/VaccineProcurementC-documentation.html
Editor and language services
- Monaco editor connected over WebSocket to a per-session Xtext language server (LSP 3.17): live diagnostics from SymboleoAC's own validation rules, completion, formatter (
Shift+Alt+F), signature help. - Semantic highlighting with a dedicated theme: identifiers coloured by kind (types, enumeration values, attributes, parameters, roles/assets, events, obligations/powers, access rules).
- Name-based navigation for identifiers the grammar does not cross-reference: Go to Definition (
F12), Find References (Shift+F12), Hover, Rename (F2). - Structured outline with click-to-navigate; Open / Save / Save As; Share by URL with no server-side storage.
- Built-in examples:
MeatSale,VaccineProcurement, Incoterms 2020FOB, and aTutorialwith 22 commented mistakes to fix.
Derived views
- Domain: UML class diagram (inheritance, stereotypes, named associations), zoom and relayout, SVG export.
- Rules: parties, obligations, powers and access rules as a network (green Grant / red Revoke).
- Policy: roles × resources matrix with CSV and HTML export.
Explain tab
- Every obligation, surviving obligation and power, and the contract as a whole, explained in plain language, generated deterministically from a structured model extracted by the language engine. No language model involved; identifiers appear exactly as written and link to their declaration; norm references are hyperlinks.
- Three styles: fact sheet, plain-English clause, and Gherkin (Feature / Rule / Scenario, Scenario Outline for disjunctive triggers, quoted identifiers) that parses with the reference
@cucumber/gherkinparser. Brief / Full detail. - Idioms collapse repeated formal patterns (correlated identifiers, absence, ranges, same-verb alternatives, same event before several points, and others).
- Exports: Copy / Save Markdown, Save
.feature, and Documentation: one self-contained HTML file with the overview, both diagrams in two layouts, the policy matrix and rule list, the explanations in all three styles, and the specification coloured as in the editor with hyperlinked references. - Shown only for specifications without validation errors.
Code generation
- One-click JavaScript generation (
Symboleo2SC, Hyperledger Fabric target) with file tree, highlighted viewer, Copy and Download .zip. - Fixes over the vendored upstream generator: obligation creation routed on the antecedent, event-relative deadlines, on-chain transfer transactions, generated code self-checked with
node --check, specifications without anACPolicysection.
Infrastructure
- Node bridge (Express + ws) with
/lsp,/generate,/model; per-session JVMs, idle reaping, session and concurrency caps, rate limiting, CORS. - Turnkey Docker Compose stack (builds both jars from source; Caddy for TLS) and a GitHub Pages workflow for the front end. See
DEPLOY.md. tools/explain-corpusrecomputes the verbalizer's coverage on the thirteen-contract corpus (11 Incoterms terms + 2 samples): 250 norms, 447 Gherkin scenarios, all parsing, no generic fallback wording.
Assets
symboleoac-language-server-1.0.0-all.jar: the Xtext language server (LSP over stdio):java -jar symboleoac-language-server-1.0.0-all.jar. JDK 17+.symboleoac-codegen-cli-1.0.0-all.jar: headless JavaScript generator and model extractor:java -jar symboleoac-codegen-cli-1.0.0-all.jar --in spec.symboleo(JSON with the generated files;--modeladds the structured and explanation model). JDK 17+.VaccineProcurementC-documentation.html: the documentation the Explain tab generates for the VaccineProcurement sample; open offline.
Both jars are built from this tag and from the vendored SymboleoAC-IDE at commit dec00792 (see upstream/UPSTREAM_PROVENANCE.md). The Docker image builds the same jars itself, so they are only needed for running the tooling outside Docker.
Full details: CHANGELOG.md.