2.2 KiB
Next session — Souveraine-owned AGPL lock primitives
Paste this into the next session as the opening message. It is orders, not a draft. Related task doc:
docs/tasks/souveraine-lock-primitives.md.
We're building the Souveraine-owned lock surface. Read
docs/tasks/souveraine-lock-primitives.md first — it's the full spec:
dependency set, the primitive tiers, the build order, done-when criteria.
Non-negotiables (do not re-litigate)
- SouveraineOS, not ii OS. Cut the cord from ii by rewriting, never vendoring. ii files inherit GPLv3; we will not ship ii-derived files. Every primitive is original Souveraine AGPL, Casey as copyright holder.
- Build the end goal, not v1/v2. No borrowed-widget bridges. The lock may not compile or may miss a subcomponent while the owned primitives are built — that's preferable to a single compromise. Full AGPL lock dep graph is the target.
- ii is behavioral reference only. Read how ii's widget behaves (on the
phone at
~/.config/quickshell/ii/modules/common/widgets/,ssh pixel); do not copy. Write fresh. - No subagents for this. Write the code in the main conversation.
- No mid-session paperwork beyond the task doc that already exists. Don't write PLAN.md / handoffs / memory unless asked.
- Don't run build/test loops as the model if you're Opus. Verify once with the real build.
Start here
Tier 0 (Appearance / ColorUtils / Translation) — nothing compiles
without them, and Appearance is where the Souveraine lock palette gets
defined (retire the scattered #d9ffffff etc. literals). Confirm the
target path (modules/souveraine/widgets/ unless Casey says otherwise),
then Tier 0 → Tier 1 (StyledText, MaterialSymbol, MaterialShape,
ErrorShakeAnimation) → Tier 2 (RippleButton) → Tier 3 (AmbientCard,
PinDots, LockKeypad, LockUtilityRow, LockReveal) → rewire
TouchLockSurface.qml + the two cards → manifest lines → deploy.
Behavior reference on the phone: ii widgets at
~/.config/quickshell/ii/modules/common/widgets/; Phosh lockscreen at
~/build/phosh/src/lockscreen.c + ui/lockscreen.ui (swipe-capture model,
shake midpoint-crossing termination — implement in QML, do not port).
Go.