nigig-org/crates
arena-agent 920827a440
Some checks are pending
doc-engine / engine (push) Waiting to run
doc-engine / consumer (push) Waiting to run
nigig-build (CAD) / supply-chain (push) Waiting to run
nigig-build (CAD) / cad-module (push) Waiting to run
nigig-build (CAD) / full-crate-check (push) Waiting to run
repo hygiene / hygiene (push) Waiting to run
feat(doc): split multi-line paste into blocks with one-step undo
A pasted TextInput payload containing newlines used to land as a
single run of text with literal line feed characters. It now splits
block-per-line like a desktop editor: line 0 splices into the caret
block, middle lines become sibling blocks inheriting the caret block's
kind, and the trailing SplitBlock carries the caret block's suffix
onto the last pasted line (ab|XY pasted with "l0\nl1\nl2" yields
abl0 / l1 / l2XY). The caret parks after the last pasted atom.

The whole paste folds into one Compensation::Group (undo applies group
members in reverse, redo applies the inverse group in authored order),
so N lines retract in a single Ctrl+Z. The caret anchor may be
tombstoned (the caret a selection delete leaves behind): the new
CrdtDocument::live_offset_of resolves it to the same live-text offset
RGA splicing uses, so pasting over a deleted selection lands exactly
where a single-line paste would. CRLF payloads strip their \r.

Surfaced and fixed at the source while building this: the synthetic
block a SplitBlock opens was a text dead end -- atoms and style ops
addressed to a split op id landed in the op log but evaporated from
the projection, and the child always spliced directly behind its
parent. Split children are now first-class materialization targets:
suffix atoms re-link head-to-tail (keeping ids and inherited style
runs), child-addressed atoms splice in RGA-wise, and the child's
splice skips the parent's real-chain descendants, keeping the middle
paste lines ahead of it.

Runtime tests cover the split/suffix/caret/undo/redo cycle,
paste-over-selection as two undo steps, and the in-cell newline guard.
Engine tests cover grouped-undo chronology, tombstone anchors, empty
middle lines, CRLF, table refusal, peer convergence, and the
synthetic-child text/style/order regressions underneath.
2026-08-01 05:44:28 +00:00
..
apps feat(doc): split multi-line paste into blocks with one-step undo 2026-08-01 05:44:28 +00:00
data Initial commit 2026-07-26 19:38:26 +03:00
matrix_client build: enable previously blocked workspace members 2026-07-27 17:13:57 +00:00
nigig-core security(sms): stop persisting message bodies, throttle sends (Phase E) 2026-08-01 04:58:46 +00:00
nigig-pay-domain feat(map): implement Phase 2 route overlay system with markers and position puck 2026-08-01 05:27:00 +00:00
nigig-pay-platform feat(pay): Phase 5 platform gateway boundary, and verify Phase 4 2026-07-29 02:07:19 +00:00
nigig-pay-storage feat(pay): complete Phase 3, start Phase 4 2026-07-27 15:34:38 +00:00
nigig-system-prefs Initial commit 2026-07-26 19:38:26 +03:00
nigig-uikit build: drop the unused robius-sms dependency and its two advisories (Phase B) 2026-07-31 22:45:58 +00:00
pageflipnav ci: require full 40-character SHAs for git dependency revs 2026-07-31 19:53:49 +00:00
robius-contacts added missing crates 2026-07-26 21:22:21 +03:00
robius-fingerprinting fix(ui): use valid syntax for assigning ids to metric values 2026-07-29 01:56:41 +00:00
robius-sms security(sms): stop persisting message bodies, throttle sends (Phase E) 2026-08-01 04:58:46 +00:00
robius-trigger added missing crates 2026-07-26 21:22:21 +03:00
robius-ussd security(pay): complete phase zero payment containment 2026-07-27 18:17:32 +00:00
copy_code.rs Initial commit 2026-07-26 19:38:26 +03:00
INTEGRATION_README.md Initial commit 2026-07-26 19:38:26 +03:00
nairobi_directory_master.csv Initial commit 2026-07-26 19:38:26 +03:00