gitroll 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,41 @@
2
2
 
3
3
  All notable changes to GitRoll are documented here. GitRoll follows [semantic versioning](https://semver.org). The Roll file format has its own version, documented in [SPEC.md](SPEC.md).
4
4
 
5
+ ## 0.2.0 (2026-09-15)
6
+
7
+ ### Changed
8
+ - **The browser app has been rebuilt** on React, Tailwind CSS and shadcn/ui components, replacing the hand-written DOM code. It looks and behaves like a modern app, and a Roll's own `.gitroll/theme.css` still repaints all of it: the documented variables are unchanged and everything else is derived from them.
9
+ - **Logging takes fewer steps.** The composer is always on the timeline instead of behind a button and a dialog. Type, topic, when it happened and amount are visible controls rather than hidden under "More options", `#tags` and amounts like `$40` are read out of what you write, and photos and files can be dropped or pasted straight in.
10
+ - **Log something that happened earlier.** When it happened is a visible control with Now, Yesterday and a week ago, plus a date picker. GitRoll still records separately when you wrote it down.
11
+ - **Search is one query box.** Filters and typed words are the same string now, so they can't disagree. Suggestions appear as you type (`has:`, `topic:`, `type:`, `after:`, `amount:` and the values for each), and the whole thing works from the keyboard. The syntax is the same one `gitroll find` takes.
12
+ - **Event text is rendered as Markdown**, which is what the format always said it was. Headings, lists, emphasis, quotes, code and tables all display, and photos and files can be embedded in the text itself. The editor has a toolbar, `Ctrl`/`⌘`+`B`/`I`/`K`, and a preview. What is written to disk is still plain Markdown a person can read.
13
+ - **Backing up happens by itself**, shortly after you save and when you return to the window, and reports what it is actually doing (checking, downloading, combining, uploading) instead of one spinner. The header button is now a status indicator; it only asks for a hand when a sync fails for a reason a person has to resolve.
14
+ - **"Project" is now "Topic"** and **"Kind" is now "Type"** throughout the interface. Nothing changes on disk: events still store `projects`, exactly as SPEC.md version 1 describes. `topic:` and `topics:` are accepted as search filters alongside `project:`.
15
+ - **The timeline is paginated**, so a Roll with years of events stays responsive.
16
+ - **Accessibility:** the app now meets WCAG 2.1 AA. Everything is reachable and operable from the keyboard, focus is always visible, dialogs replace the browser's own `alert`/`confirm`/`prompt`, results and errors are announced, and colours meet contrast requirements in both light and dark mode. Secondary text is slightly darker than before for that reason.
17
+
18
+ - **Installing GitRoll still installs nothing else.** The interface is built with React and Tailwind, but everything is bundled at build time, so the published package continues to have no runtime dependencies of its own.
19
+
20
+ ### Removed
21
+ - **The built-in Maintenance type.** The starter set is now Log, Expense, Decision, Issue and Milestone. Events already logged as `maintenance` still open and still work; to keep its fields, define it in your own Roll with `gitroll types add`.
22
+
23
+ ### Fixed
24
+ - Searching for more than one word. The query round-tripped through the address bar with its whitespace trimmed, which erased the space as soon as it was typed.
25
+
26
+ ### Security
27
+ - The app's Content Security Policy now allows inline **styles**, which the interface needs to position dialogs and menus. Scripts remain same-origin only, with no inline or third-party script and no framing.
28
+
29
+ ## 0.1.2 (2026-09-15)
30
+
31
+ ### Fixed
32
+ - **Release publishing:** npm now receives each release with provenance (0.1.1 wasn't published to npm), and the Scoop bucket is updated automatically. No changes to the app.
33
+
34
+ ## 0.1.1 (2026-09-15)
35
+
36
+ ### Added
37
+ - **Scoop (Windows):** `scoop bucket add gitroll https://github.com/jimhoyd-com/scoop-bucket`, then `scoop install gitroll/gitroll`. Every release installs the manifest with Scoop on Windows before publishing. `gitroll version`, `upgrade` and `uninstall` recognize Scoop installs.
38
+ - **npm:** `npm install --global gitroll`, published by the release workflow with provenance through npm trusted publishing (no stored npm token).
39
+
5
40
  ## 0.1.0 (2026-09-15)
6
41
 
7
42
  First public release.
package/README.md CHANGED
@@ -12,7 +12,13 @@ Your logbook, called a **Roll**, is a folder of plain files on your computer tha
12
12
 
13
13
  GitRoll needs [Git](https://git-scm.com/downloads) and [Node.js](https://nodejs.org) 20 or newer.
14
14
 
15
- **Mac or Linux:** download and run the installer. It fetches the latest release, verifies its SHA-256 checksum, and installs it.
15
+ **Homebrew (Mac or Linux):**
16
+
17
+ ```bash
18
+ brew install jimhoyd-com/tap/gitroll
19
+ ```
20
+
21
+ **Mac or Linux without Homebrew:** download and run the installer. It fetches the latest release, verifies its SHA-256 checksum, and installs it.
16
22
 
17
23
  ```bash
18
24
  curl -fsSL https://raw.githubusercontent.com/jimhoyd-com/gitroll/main/scripts/install.sh -o install.sh
@@ -22,13 +28,20 @@ curl -fsSL https://raw.githubusercontent.com/jimhoyd-com/gitroll/main/scripts/in
22
28
  sh install.sh
23
29
  ```
24
30
 
25
- **Windows (or any system with Node.js):** download `gitroll-<version>.tgz` and `SHA256SUMS` from the [latest release](https://github.com/jimhoyd-com/gitroll/releases/latest), check the checksum, then install the downloaded file:
31
+ **Windows, with [Scoop](https://scoop.sh):**
32
+
33
+ ```powershell
34
+ scoop bucket add gitroll https://github.com/jimhoyd-com/scoop-bucket
35
+ scoop install gitroll/gitroll
36
+ ```
37
+
38
+ **Any system with Node.js, from npm:** published with [provenance](https://docs.npmjs.com/generating-provenance-statements), so you can check it was built by this repository's release workflow.
26
39
 
27
40
  ```bash
28
- npm install -g gitroll-<version>.tgz
41
+ npm install --global gitroll
29
42
  ```
30
43
 
31
- Every release is tested by installing it on clean Linux, macOS and Windows machines before it's published. Homebrew (`brew install jimhoyd-com/tap/gitroll`), Scoop and the npm registry are coming; they'll be listed here once they're live.
44
+ Every release is tested by installing it on clean Linux, macOS and Windows machines, with Homebrew and with Scoop, before it's published. Each release also has the package and `SHA256SUMS` on the [releases page](https://github.com/jimhoyd-com/gitroll/releases/latest) if you'd rather download and check it yourself.
32
45
 
33
46
  For one-command backup and sharing, also install the [GitHub CLI](https://cli.github.com) and run `gh auth login`. It's optional.
34
47
 
@@ -48,10 +61,11 @@ GitRoll opens right in your terminal: use ↑↓ to browse, `n` to log, `/` to f
48
61
 
49
62
  In the browser:
50
63
 
51
- - **Log:** click **Log**, write what happened, and add photos or files. **More options** has project, kind, amount, date and tags. Then click **Save**.
52
- - **Find:** type in **Search**, use **This month**, **This year** or **With files**, or click any project or `#tag`.
53
- - **Edit:** open an entry and click **Edit**. **History** shows every earlier version.
54
- - **Back up:** click **Sync**. The number on the button counts changes that aren't backed up yet.
64
+ - **Log:** start typing in the box at the top and click **Save** (or press `n` from anywhere, and `Ctrl`/`⌘`+`Enter` to save). Text is Markdown, `#tags` and amounts like `$40` are picked up as you type, and photos and files can be dropped or pasted straight in. The row of buttons under the box sets the type, the topic, when it happened and the amount including logging something that happened last week.
65
+ - **Find:** type words in **Search**, or a filter like `has:photo`, `topic:house`, `after:2026-01-01` or `amount:>500`. Suggestions appear as you type; press `/` to jump to the box. The same filters work in `gitroll find`.
66
+ - **Edit:** open an event and click **Edit**. **History** shows every earlier version.
67
+ - **Back up:** GitRoll backs up by itself shortly after you save and when you come back to the window. The indicator in the header shows where that has got to; click it to back up now or to see why one failed.
68
+ - **Keyboard:** press `?` for the full list of shortcuts.
55
69
 
56
70
  If the page asks you to open GitRoll from the link in your terminal, copy that link. It's a per-session key that keeps other programs on your computer out.
57
71
 
@@ -66,7 +80,8 @@ Your Rolls contain no app code, so upgrading never changes them: new versions re
66
80
  | How you installed | Upgrade with |
67
81
  | --- | --- |
68
82
  | Homebrew | `brew upgrade gitroll` (or `gitroll upgrade`) |
69
- | The installer, or npm | `gitroll upgrade`. It downloads the latest release, checks it against `SHA256SUMS`, and installs it. Running the installer again also works. |
83
+ | Scoop (Windows) | `scoop update gitroll` (or `gitroll upgrade`) |
84
+ | The installer, or npm | `gitroll upgrade`. It downloads the latest release, checks it against `SHA256SUMS`, and installs it. Running the installer again, or `npm install --global gitroll@latest`, also works. |
70
85
  | From source | `git pull && npm ci && npm run build` |
71
86
 
72
87
  Not sure? `gitroll version` shows the version and how it was installed. `gitroll upgrade --dry-run` shows what would happen without changing anything.
@@ -86,6 +101,7 @@ If the `gitroll` command no longer works, remove it directly:
86
101
  | How you installed | Uninstall with |
87
102
  | --- | --- |
88
103
  | Homebrew | `brew uninstall gitroll` |
104
+ | Scoop (Windows) | `scoop uninstall gitroll` |
89
105
  | The installer, or npm (Mac, Linux, Windows) | `npm uninstall --global gitroll` |
90
106
  | Mac or Linux, any method | [`scripts/uninstall.sh`](scripts/uninstall.sh): download it, read it, then run `sh uninstall.sh` (add `--remove-settings` to also remove settings) |
91
107
 
package/SPEC.md CHANGED
@@ -72,7 +72,9 @@ Edits rewrite the file in place (same path, same `id`), and each edit is its own
72
72
 
73
73
  A type is a template: a label, an icon, and optional fields stored under `data`. It never changes how an event is stored. An event whose type isn't known is still a valid event and renders as a general log.
74
74
 
75
- Built-in starter types: `log`, `expense`, `maintenance`, `decision`, `issue`, `milestone`.
75
+ Built-in starter types: `log`, `expense`, `decision`, `issue`, `milestone`.
76
+
77
+ The starter set is deliberately small. A type id that no definition covers is still a valid event and renders as a general log, so a Roll may use any id it likes; anything more specific belongs in `.gitroll/types/<id>.yaml`.
76
78
 
77
79
  A custom type lives in the Roll, so its data never depends on a plugin being installed:
78
80