Jot 1.2.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package Jot --version 1.2.1
NuGet\Install-Package Jot -Version 1.2.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Jot" Version="1.2.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Jot --version 1.2.1
#r "nuget: Jot, 1.2.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Jot as a Cake Addin
#addin nuget:?package=Jot&version=1.2.1

// Install Jot as a Cake Tool
#tool nuget:?package=Jot&version=1.2.1

A library that makes it easier to persist and reapply application state (window locations and sizes, user settings and preferences, etc.).

In its simplest use case you can use it as an alternative to a .settings file. Take for example a window.
To make its size and location immune to shutdown, you would basically only write something like this:

stateTrackerInstance
   .Configure(theWindow).IdentifyAs("theMainWindow")
   .AddProperties<MainWindow>(w => w.Height, w => w.Width, w => w.Left, w => w.Top, w => w.WindowState)
   .RegisterPersistTrigger("Closed")
   .Apply();    

No need to define properties in the .settings file and then use them from two additional places (window startup and window close)

You can control almost everything about Jot: where the data is stored, how and if it is serialized, what data to take care of and when to persist and apply which piece of data.

It's not limited to tracking forms and windows, you can track any kind of object, e.g. settings objects, user preferences, last selections etc.

And it's not just for desktop applications either, you can use it to make MVC controller properties stateful (it can use Session, UserProfile or some other custom store as the backing store for the data).

The library is tiny (well under 1000 LOC) it's highly customizable and provides many extension points, but comes with batteries included.

The source repository is on github, and there is an article describing it on codeproject (check the project url). The article is a bit dated compared to the library code though.

Product Compatible and additional computed target framework versions.
.NET Framework net is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (5)

Showing the top 5 NuGet packages that depend on Jot:

Package Downloads
PowWinForms

WinForms reactive utilities

RS-StandardComponents

Containing the core components of RS-Base like converters, RSView, Snacky, and other nice stuff

MsUtilities

Utility functions to speed coding up, basically used in WPF applications built up on Prism framework.

Jot.Unity

Contains a custom extension for the Unity container that applies tracking to all objects it builds up (injects with dependencies). Apply an attribute to the properties you want to be persistent and you're already done.

PowRxVar.WinForms

Composable reactive variables

GitHub repositories (4)

Showing the top 4 popular GitHub repositories that depend on Jot:

Repository Stars
micahmo/WgServerforWindows
Wg Server for Windows (WS4W) is a desktop application that allows running and managing a WireGuard server endpoint on Windows
CXWorld/CapFrameX
Frametime capture and analysis tool
baffler/Transparent-Twitch-Chat-Overlay
Twitch chat on top of windowed games for single monitor streamers
bcssov/IronyModManager
Mod Manager for Paradox Games. Official Discord: https://discord.gg/t9JmY8KFrV
Version Downloads Last updated
2.1.17 7,548 7/19/2023
2.1.16 730 5/22/2023
2.1.15 456 4/25/2023
2.1.13 18,610 2/4/2022
2.1.12 531 1/29/2022
2.1.11 8,708 9/14/2021
2.1.10 367 9/14/2021
2.1.9 354 9/14/2021
2.1.8 10,797 12/9/2020
2.1.7 4,634 6/17/2020
2.1.6 679 6/7/2020
2.1.4 2,756 12/3/2019
2.0.3 4,682 10/9/2019
2.0.1 2,898 3/20/2019
2.0.0 806 3/18/2019
1.4.1 9,707 12/25/2017
1.4.0 1,533 8/16/2017
1.3.11 12,705 11/19/2016
1.3.10 1,347 11/6/2016
1.3.9 1,331 11/6/2016
1.3.8 1,351 11/6/2016
1.3.7 1,312 11/6/2016
1.3.6 1,322 11/6/2016
1.3.5 1,337 11/6/2016
1.3.4 1,302 11/6/2016
1.3.3 1,606 11/5/2016
1.3.2 1,559 11/5/2016
1.3.1 1,471 11/5/2016
1.3.0 1,491 11/1/2016
1.2.7 8,613 3/10/2016
1.2.6 1,217 3/10/2016
1.2.5 1,226 3/10/2016
1.2.4 1,125 3/10/2016
1.2.3 1,736 8/22/2015
1.2.2 1,483 8/22/2015
1.2.1 1,194 8/22/2015
1.1.99 1,444 8/20/2015
1.0.99 1,432 8/20/2015