@inerrata-corporation/errata 2.0.21-dev.4009 → 2.0.21-dev.4011
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/errata.mjs +1 -1
- package/package.json +1 -1
- package/resources/claude-mods/errata-minimap/.claude-plugin/plugin.json +1 -1
- package/resources/claude-mods/errata-minimap/hooks/register.tsx +41 -25
- package/resources/context-plugin/.codex-plugin/plugin.json +1 -1
- package/resources/context-plugin/SHA256SUMS +1 -1
package/errata.mjs
CHANGED
|
@@ -84052,7 +84052,7 @@ function createWatchBreaker(deps) {
|
|
|
84052
84052
|
}
|
|
84053
84053
|
|
|
84054
84054
|
// src/engine.ts
|
|
84055
|
-
var DAEMON_VERSION = true ? "2.0.21-dev.
|
|
84055
|
+
var DAEMON_VERSION = true ? "2.0.21-dev.4011" : "2.0.0-alpha.0";
|
|
84056
84056
|
var IGNORED_PATH = /[\\/](?:\.git|node_modules|\.errata|\.claude|\.codex|\.cursor|\.turbo|\.next|dist|coverage|test-results|playwright-report|__pycache__)(?:[\\/]|$)/;
|
|
84057
84057
|
var IGNORED_NOISE = /castalia\.db|eventlog\.sqlite|turn-cursors/;
|
|
84058
84058
|
var GIT_OP_MUTE_MS = 4e3;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "errata-minimap",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"author": { "name": "inErrata", "url": "https://inerrata.ai" },
|
|
5
5
|
"description": "The errata library: the causal chains of the latest burst that entered the agent's context, in bookcases by technology with a catalog card — and errata's inline tags, tidied in the chat.",
|
|
6
6
|
"types": "./types/index.d.ts"
|
|
@@ -386,6 +386,11 @@ function isTagMode(value: unknown): value is TagMode {
|
|
|
386
386
|
return TAG_MODES.includes(value as TagMode)
|
|
387
387
|
}
|
|
388
388
|
|
|
389
|
+
/** A book's hover group: its spine rows and its card light together. */
|
|
390
|
+
function scopeOf(book: { key: string }): string {
|
|
391
|
+
return `book:${book.key}`.slice(0, 64)
|
|
392
|
+
}
|
|
393
|
+
|
|
389
394
|
function isPaneView(value: unknown): value is PaneView {
|
|
390
395
|
return PANE_VIEWS.includes(value as PaneView)
|
|
391
396
|
}
|
|
@@ -657,28 +662,35 @@ export const register: Register = on => {
|
|
|
657
662
|
return (
|
|
658
663
|
<Box key="library" position="relative" width={width} height={libraryRows}>
|
|
659
664
|
<Raster key="map" columns={width} rows={libraryRows} cells={cells} />
|
|
665
|
+
{/* Every book's hit-area first… */}
|
|
666
|
+
{spots.flatMap(s => {
|
|
667
|
+
const scope = scopeOf(s.book)
|
|
668
|
+
const pin = () => {
|
|
669
|
+
motion.focus = s.book.problem?.id ?? s.book.memberIds[0]
|
|
670
|
+
$.ui.invalidate('ui.render')
|
|
671
|
+
}
|
|
672
|
+
return [...Array(s.height).keys()].map(r => (
|
|
673
|
+
<Box key={`${scope}:${r}`} position="absolute" top={s.top + r} left={s.x} hover={{ scope }}>
|
|
674
|
+
<Button key={`${scope}:press:${r}`} plain onPress={pin}>
|
|
675
|
+
{[...Array(s.width).keys()].map(dx => {
|
|
676
|
+
const c = cell(s.x + dx, s.top + r)
|
|
677
|
+
return <Text color={colourOf(c.fg)} backgroundColor={colourOf(c.bg)}>{c.ch}</Text>
|
|
678
|
+
})}
|
|
679
|
+
</Button>
|
|
680
|
+
</Box>
|
|
681
|
+
))
|
|
682
|
+
})}
|
|
683
|
+
{/* …then every card. Positioned boxes paint in tree order, so a card emitted beside its own
|
|
684
|
+
book was painted over by every book after it. Last in the tree, a card is over all of them;
|
|
685
|
+
the background makes it opaque, or the books behind would show through its blank cells. */}
|
|
660
686
|
{spots.map(s => {
|
|
661
|
-
const scope =
|
|
687
|
+
const scope = scopeOf(s.book)
|
|
662
688
|
const parts = (['cause', 'problem', 'fix'] as const).flatMap(r => (s.book[r] ? [s.book[r]!] : []))
|
|
663
689
|
const cardHeight = parts.length + 3
|
|
664
690
|
const cardLeft = s.x + s.width + 1 + cardWidth <= width ? s.x + s.width + 1 : Math.max(0, s.x - cardWidth - 1)
|
|
665
691
|
const cardTop = Math.max(0, Math.min(s.top, libraryRows - cardHeight))
|
|
666
|
-
const
|
|
667
|
-
|
|
668
|
-
$.ui.invalidate('ui.render')
|
|
669
|
-
}
|
|
670
|
-
return [
|
|
671
|
-
...[...Array(s.height).keys()].map(r => (
|
|
672
|
-
<Box key={`${scope}:${r}`} position="absolute" top={s.top + r} left={s.x} hover={{ scope }}>
|
|
673
|
-
<Button key={`${scope}:press:${r}`} plain onPress={pin}>
|
|
674
|
-
{[...Array(s.width).keys()].map(dx => {
|
|
675
|
-
const c = cell(s.x + dx, s.top + r)
|
|
676
|
-
return <Text color={colourOf(c.fg)} backgroundColor={colourOf(c.bg)}>{c.ch}</Text>
|
|
677
|
-
})}
|
|
678
|
-
</Button>
|
|
679
|
-
</Box>
|
|
680
|
-
)),
|
|
681
|
-
// The hover card: what the book holds, revealed while the pointer is anywhere on its spine.
|
|
692
|
+
const paper = hex(palette.card)
|
|
693
|
+
return (
|
|
682
694
|
<Box
|
|
683
695
|
key={`${scope}:card`}
|
|
684
696
|
position="absolute"
|
|
@@ -686,23 +698,27 @@ export const register: Register = on => {
|
|
|
686
698
|
left={cardLeft}
|
|
687
699
|
width={cardWidth}
|
|
688
700
|
display="none"
|
|
689
|
-
hover={{ scope, display: 'flex' }}
|
|
701
|
+
hover={{ scope, display: 'flex', backgroundColor: paper }}
|
|
690
702
|
flexDirection="column"
|
|
691
703
|
borderStyle="round"
|
|
692
704
|
borderColor={hex(palette.gilt)}
|
|
693
705
|
>
|
|
694
|
-
<Text bold wrap="truncate-end" color={hex(palette.binding.problem)}>
|
|
695
|
-
{callNumber(catalog, s.book)}
|
|
706
|
+
<Text bold wrap="truncate-end" color={hex(palette.binding.problem)} backgroundColor={paper}>
|
|
707
|
+
{fitTitle(`${callNumber(catalog, s.book)} ${s.book.tech ?? 'general'}`, cardWidth - 2).padEnd(cardWidth - 2)}
|
|
696
708
|
</Text>
|
|
697
709
|
{parts.map(part => (
|
|
698
|
-
<Text wrap="truncate-end">
|
|
710
|
+
<Text wrap="truncate-end" backgroundColor={paper}>
|
|
699
711
|
<Text color={hex(palette.binding[bindingOf(part.label)])}>{BINDING_GLYPH[bindingOf(part.label)]} </Text>
|
|
700
|
-
<Text
|
|
712
|
+
<Text color={hex(part.isDelivered ? palette.cardInk : palette.cardFaint)}>
|
|
713
|
+
{fitTitle(part.name, cardWidth - 4).padEnd(cardWidth - 4)}
|
|
714
|
+
</Text>
|
|
701
715
|
</Text>
|
|
702
716
|
))}
|
|
703
|
-
<Text
|
|
704
|
-
|
|
705
|
-
|
|
717
|
+
<Text color={hex(palette.cardFaint)} backgroundColor={paper} wrap="truncate-end">
|
|
718
|
+
{'click to read it on the card'.padEnd(cardWidth - 2)}
|
|
719
|
+
</Text>
|
|
720
|
+
</Box>
|
|
721
|
+
)
|
|
706
722
|
})}
|
|
707
723
|
</Box>
|
|
708
724
|
)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
f8781bb7dda67021816945b486690791d07150a86de40be1d49161f40da81c78 .codex-plugin/plugin.json
|
|
2
2
|
a7bebae9fb01c838d6c75fc784129e28be571233fa66ff5ee8039b574f35ccf7 assets/icon.png
|
|
3
3
|
fc38b64e4df1e0b72c35764bef6c4c05430d97c9009ad0ecc8a9e75b4deab232 configure-local.mjs
|
|
4
4
|
73dc6028b3b070257c7c31f252d11e55a9e096f4aed0f187f10cb21716e1e6d7 dist/client.js
|