diff --git a/packages/chess/src/ui/Board.tsx b/packages/chess/src/ui/Board.tsx
index f81b25e..3ec312b 100644
--- a/packages/chess/src/ui/Board.tsx
+++ b/packages/chess/src/ui/Board.tsx
@@ -13,6 +13,7 @@ import {
type SquareOverlayComponent,
} from './preset-overlays';
import { VisualEffectLayer } from './VisualEffectLayer';
+import { ModifiedPieceIndicator } from './ModifiedPieceIndicator.js';
import '../presets/ui-overlays-index';
interface BoardProps {
@@ -327,28 +328,33 @@ export function Board({ facts, legalMoves, onMove, turn, myColor, lastMove, chec
* FLIP clean.
*/}
{piece && (
-
onPieceHover?.(piece.id)}
- onMouseLeave={() => onPieceHover?.(null)}
- onClick={() => onPieceClick?.(piece.id)}
- >
-
-
+ <>
+ onPieceHover?.(piece.id)}
+ onMouseLeave={() => onPieceHover?.(null)}
+ onClick={() => onPieceClick?.(piece.id)}
+ >
+
+
+ {engine !== undefined && (
+
+ )}
+ >
)}
{/* Rank/File labels (optional but helpful for debug) */}
diff --git a/packages/chess/src/ui/ModifiedPieceIndicator.tsx b/packages/chess/src/ui/ModifiedPieceIndicator.tsx
new file mode 100644
index 0000000..2162aed
--- /dev/null
+++ b/packages/chess/src/ui/ModifiedPieceIndicator.tsx
@@ -0,0 +1,25 @@
+import { MODIFIER_REGISTRY } from '../modifiers/registry';
+import type { ChessEngine } from '../engine';
+import type { EntityId } from '@paratype/rete';
+
+interface Props {
+ pieceId: number;
+ engine: ChessEngine;
+}
+
+export function ModifiedPieceIndicator({ pieceId, engine }: Props) {
+ const isModified = MODIFIER_REGISTRY.list().some((descriptor) => {
+ return engine.session.get(pieceId as unknown as EntityId, descriptor.attrName) !== undefined;
+ });
+
+ if (!isModified) {
+ return null;
+ }
+
+ return (
+
+ );
+}