-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathblueprints.yaml
More file actions
124 lines (110 loc) · 3.79 KB
/
Copy pathblueprints.yaml
File metadata and controls
124 lines (110 loc) · 3.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
name: Sync
slug: sync
type: plugin
version: 1.1.3
description: Real-time collaboration substrate for Grav. Stores Yjs CRDT updates and presence state for multi-user editing. Transport-agnostic; works with polling, Mercure, or WebSocket providers. Runs on Grav 1.7 and 2.0; integrates with the api plugin when available.
icon: rotate
author:
name: Team Grav
email: devs@getgrav.org
url: https://getgrav.org
homepage: https://github.com/getgrav/grav-plugin-sync
keywords: collaboration, yjs, crdt, realtime, sync
bugs: https://github.com/getgrav/grav-plugin-sync/issues
license: MIT
compatibility:
grav: ['1.7', '2.0']
dependencies:
- { name: grav, version: '>=1.7.49' }
- { name: login, version: '>=3.8.0' }
form:
validation: loose
fields:
enabled:
type: toggle
label: Plugin Status
highlight: 1
default: 1
options:
1: Enabled
0: Disabled
validate:
type: bool
section_transports:
type: section
title: Transports
underline: true
transport_preference:
type: array
label: Transport Preference Order
help: Drag rows to reorder. The first available transport in the list handles live delivery; later rows serve as fallbacks. Only transports installed in this Grav instance appear in the dropdown — leave empty to fall back to each transport's built-in priority.
value_only: true
create: false
data-options@: '\Grav\Plugin\Sync\Transport\TransportRegistry::availableTransports'
validate:
type: array
section_storage:
type: section
title: Storage
underline: true
storage.adapter:
type: select
label: Storage Adapter
default: auto
help: Where Yjs update logs and snapshots are persisted. Auto prefers SQLite when the pdo_sqlite PHP extension is available and falls back to File otherwise. SQLite is recommended for high-concurrency sites — it avoids file-lock contention and survives unclean shutdowns better.
options:
auto: Auto (prefer SQLite when available)
file: File (append-only log per room)
sqlite: SQLite (one database per room)
section_squash:
type: section
title: Squash
underline: true
squash.idle_seconds:
type: number
label: Idle Timeout (seconds)
default: 60
help: How long a room must have no presence before the collaboration log is squashed back into the canonical markdown file and truncated.
validate:
type: int
min: 5
squash.max_log_bytes:
type: number
label: Max Log Size (bytes)
default: 524288
help: Forces an immediate squash when the update log grows beyond this size, regardless of activity. Default 512KB.
validate:
type: int
min: 4096
section_presence:
type: section
title: Presence
underline: true
presence.ttl_seconds:
type: number
label: Heartbeat TTL (seconds)
default: 30
help: How long a client is considered present after its last heartbeat. Tabs that disappear without explicit disconnect time out after this.
validate:
type: int
min: 5
section_polling:
type: section
title: Polling Defaults
underline: true
polling.idle_interval_ms:
type: number
label: Idle Poll Interval (ms)
default: 4000
help: How often clients poll when editing alone. Clients use this as a default; servers can suggest a different cadence in the capabilities response.
validate:
type: int
min: 500
polling.active_interval_ms:
type: number
label: Active Poll Interval (ms)
default: 1000
help: How often clients poll when at least one other collaborator is present in the same room.
validate:
type: int
min: 250