Lonelog

by Snifer
5
4
3
2
1
Score: 49/100

Description

Streamline your solo and group TTRPG journaling with quick shortcuts for Lonelog notation - the standard notation system for solo RPG session logging.

Reviews

No reviews yet.

Stats

19
stars
3,587
downloads
6
forks
100
days
68
days
68
days
5
total PRs
0
open PRs
1
closed PRs
4
merged PRs
34
total issues
5
open issues
29
closed issues
110
commits

Latest Version

2 months ago

Changelog

Public API v1 documentation and integration hardening

This patch release refines the first public Lonelog API with stronger external-integration helpers, deeper partial write support in Combat and Partylog, consolidated bilingual API documentation, and lint-safety fixes in the implementation.

What Changed

  • Added unified external integration adapters:
    • api.adapters.content(...)
    • api.adapters.file(...)
    • api.adapters.activeFile()
  • Expanded JSON-friendly normalized outputs across all public gameplay domains so third-party consumers can rely on serializable snapshots consistently.
  • Expanded Combat API with targeted encounter helpers:
    • getEncounter(...)
    • getLatestEncounter(...)
    • targeted add/update/remove combatant mutations
    • targeted round advancement and encounter closing helpers
  • Expanded Partylog API with block-targeted and lifecycle-style mutations:
    • getLatestBlockIndex(...)
    • append entry/tag into a specific Partylog block
    • upsert helpers for goals, quests, factions, threads, and party resources
  • Added new public mutation events for:
    • combat-combatant-updated
    • combat-combatant-removed
    • partylog-tag-mutated
  • Consolidated API documentation into two primary files:
    • lonelog-api.md (English)
    • lonelog-api-es.md (Spanish)
  • Expanded API documentation with:
    • real-world integration examples
    • snippets by consumer plugin type
    • formal mutation result contract
    • event payload shapes
    • clearer support labeling for complete vs partial write modules
  • Added dedicated API changelog files:
    • lonelog-api-changelog.md
    • lonelog-api-changelog-es.md
  • Hardened several implementation boundaries to eliminate unsafe-type lint warnings in API/editor/highlighter/parser-related files.

Release Notes

  • This is a patch release because it strengthens the already introduced API surface and its documentation without changing the main end-user workflow.
  • The API remains version v1, but its integration story is now significantly clearer and safer for third-party plugin authors.

README file from

Github

Lonelog for Obsidian - Solo TTRPG Journaling

Obsidian version license GitHub Downloads Ko-fi

Lee esto en Castellano: README-es.md

Lonelog Obsidian Plug-in Logo

Lonelog for Obsidian streamlines your solo and group TTRPG journaling by bringing the Lonelog notation standard into your vault and extending it with the Partylog add-on for group-session notes. Focus on the story while keeping mechanics organized, visual, and fast.

Main Features

1. Smart Notation System

Quickly insert Lonelog core symbols using the Command Palette or custom hotkeys:

  • @ Action
  • ? Oracle Question
  • d: Dice Roll
  • -> Result
  • => Consequence
  • [Tag:Name|Attributes] Entity tags for NPCs, locations, PCs, and more

2. Campaign and Session Management

  • Automatic headers to create campaign and session structure instantly
  • Scene markers with automatic scene numbering and optional context prompts
  • Code blocks with lonelog rendering support
@ The character investigates
d: 1d6 -> 5
-> Something suspicious happens.

3. Interface and Highlighting

  • Syntax highlighting in Live Preview and Reading Mode
  • Color customization for every Lonelog token
  • Dedicated views for progress, threads, scenes, combat, dungeon, and resources

4. Add-ons

  • Combat: rounds, combat blocks, foe tracking
  • Dungeon crawling: room state tracking and dungeon status
  • Resource tracking: inventory and wealth management
  • Partylog: group-session notation using ```partylog blocks and a dedicated Partylog dashboard
  • Card drawing and advanced dice notation

5. Other Features

  • Autocomplete based on previously mentioned entities
  • Internationalization in English and Spanish
  • Public API v1 with JSON-friendly normalized outputs for external plugin integrations

Installation

BRAT

  1. Install the BRAT plugin.
  2. In BRAT settings, click Add Beta Plugin.
  3. Enter https://github.com/Snifer/lonelog.
  4. Enable Lonelog in Settings -> Community Plugins.

Manual Installation

  1. Clone or copy the release files into .obsidian/plugins/lonelog/.
  2. Reload Obsidian.
  3. Enable Lonelog in Settings -> Community Plugins.

Community Plugins

Usage

  1. Open any note.
  2. Press Ctrl/Cmd + P to open the command palette.
  3. Type Lonelog to see insertion and management commands.
  4. Assign hotkeys in Settings -> Hotkeys for faster logging.

Partylog add-on

Lonelog now includes an optional Partylog add-on for group-session notes.

Quick path:

  1. Enable Partylog add-on in plugin settings.
  2. Write Partylog notation inside fenced partylog code blocks.
  3. Open Partylog Dashboard from the view selector or command palette.

Example:

```partylog
@(Kael) Sneak past the guard
d(Kael): Stealth d20+5=8 vs DC 14 -> Fail
=> Kicks a bottle. Guard turns!
! Guard draws his blade and advances
```

Current Partylog dashboard tabs:

  • Overview
  • Scenes
  • Threads
  • Timeline
  • Roster
  • Recap

Development

npm install
npm run dev
npm run build

Public API

Lonelog exposes a public API v1 for interoperability with other Obsidian plugins through the plugin instance.

Example:

type LonelogApi = {
  apiVersion: "1";
  parse: {
    content(content: string): unknown;
    file(file: TFile): Promise<unknown>;
    isLonelogNote(target: TFile | string): Promise<boolean>;
  };
  tokenize: {
    line(line: string): unknown[];
    lines(lines: string[]): unknown[][];
  };
  settings: {
    get(): Record<string, unknown>;
  };
  views: {
    openDashboard(): Promise<void>;
  };
};

const lonelogPlugin = app.plugins.plugins["lonelog"] as { api?: LonelogApi } | undefined;

const api = lonelogPlugin?.api;
if (!api || api.apiVersion !== "1") return;

const parsed = api.parse.content("[N:Jonah|friendly]");
const tokens = api.tokenize.line("=> [N:Jonah|friendly]");

await api.views.openDashboard();

Current V1 scope:

  • adapters.content
  • adapters.file
  • adapters.activeFile
  • capabilities.get
  • addons.getStatus
  • dungeon.*
  • resources.*
  • combat.*
  • progress.*
  • partylog.*
  • info.get
  • info.getModules
  • info.getStabilityPolicy
  • errors.codes
  • errors.isLonelogApiError
  • events.on/off/offref
  • domain events for progress/resources mutations
  • write helpers for dungeon/partylog
  • deeper inventory + structured partylog tag mutations
  • combat write api + partial dungeon mutations
  • fine-grained helper lookups
  • json-friendly normalized outputs
  • parse.content
  • parse.file
  • parse.isLonelogNote
  • parse.partylog.content
  • parse.partylog.file
  • parse.partylog.hasBlocks
  • tokenize.line
  • tokenize.lines
  • settings.get
  • views.open...

Full guide (English): lonelog-api.md

Full guide (Spanish): lonelog-api-es.md

API changelog: lonelog-api-changelog.md

License

This plugin is licensed under the 0-BSD License. See LICENSE for details.

The Lonelog notation system is © 2025-2026 Roberto Bisceglie, licensed under CC BY-SA 4.0.

Support

If this project adds value to your gaming table, you can support the developer with a donation via PayPal or Ko-fi.

Donate Ko-fi

Credits