Commit Graph
105 Commits
Author SHA1 Message Date
Frank 72a3dbbe08 Docs: status line page truth-audited against bundle; four claims corrected
Full-source re-verification of pi/statusline.md against dist/cli.js plus a
live screenshot matrix. False and corrected: claude's top rule is NOT the
context meter (meter is box/band only; rule elsewhere is a session-accent
filler); 'Tern-only' composer-bar claim (real knob: composer.tokenRate);
segmentOptions gated to preset custom (they merge under every preset - only
the arrays are gated); mode segment yolo (states are Plan/Prewalk/Goal/
Vibe/Loop). Expanded: 7-preset defaults table, per-shape statusAttachment/
bottomBar model incl. plugin shape registry, contextLine per-value behavior,
27-segment catalog with triggers and options, segmentOptions schema, full
statusLine.*/composer.* knob registry. Changelog entry added.

Refs #5
2026-10-18 02:30:39 -07:00
dank 876d8cd519 Merge pull request 'Status line: custom segments for fleet bars; slim frank-archon label' (#5) from chore/statusline-custom into main 2026-10-18 01:09:59 -07:00
Frank c2d855b33d Status line: move model segment to the right cluster (model, cost, time)
Left group keeps the where-am-I identity (host, path, git, pr); the right
cluster carries what's-running (model) plus cost and elapsed time, painted
in array order. context_pct verified to hoist into the inline meter spacer
regardless of array position. Docs + changelog updated.
2026-10-18 01:08:26 -07:00
Frank 246189f054 Status line: band shape, drop token_in/token_out segments
Band merges the segment groups into one row above the editor and paints
the labeled inline context meter (60% - 200K); the session title rides
the working row. Cumulative token totals live in /session - off the bar.
Docs and changelog updated to the band final state.
2026-10-18 00:58:21 -07:00
Frank 04d3628c94 Docs: path segment two-mode stripWorkPrefix behavior; changelog matches shipped true 2026-10-18 00:51:12 -07:00
Frank e0920dc067 Status line: path segment keeps logical project/worktree label
stripWorkPrefix true: worktree sessions show projectName/worktreeName with
the worktree glyph instead of the on-disk cwd; matches the live bar tuned
and screenshot-approved 2026-10-18.
2026-10-18 00:50:57 -07:00
Frank e044700ef7 Status line: custom segments tuned for fleet bars; slim frank-archon label
Named presets silently ignore leftSegments/rightSegments - the nerd
preset's baked arrays were what we saw, and the configured arrays were
dead. preset: custom with explicit arrays: chip (right) = token_in,
token_out, cost, context_pct, time_spent; strip (left) = session_name,
vim, mode, hostname, model, path, git (branch text off - worktree
branches are autogenerated; dirty badges kept), pr. Cut tok/s duplicate,
clock, cache trio, context_total, subagents, session hash. Composer
shape stays claude after live box/band/rule trials. models.yml display
name frank-archon drops the (dankserver) suffix; id untouched.
Docs: pi/statusline.md records the preset-vs-custom trap, shape->segment
routing, and the context-meter truth.
2026-10-18 00:39:11 -07:00
Frank 7b7dbf55c2 Add 1/3 to niri Mod+R width presets
Cycle is now 1/4 -> 1/3 -> 1/2, ascending; heights unchanged.
2026-10-17 18:31:54 -07:00
Frank a4218361e2 Switch niri width presets from fifths ladder to 1/4 + 1/2
Mod+R now cycles 1/4 <-> 1/2 only, matching the quarter-based
preset-window-heights; verified live (840px quarter / 1696px half on the
3440px panel). Mod+F still maximizes a column.
2026-10-17 18:30:50 -07:00
Frank c6fa584d0a Merge branch 'main' of http://192.168.0.143:3000/dank/command-center 2026-10-17 18:15:04 -07:00
Frank 541f27f316 Simplify niri size controls: 5% nudges, quarter/half height presets, Ctrl+arrows consume-or-expel
- set-column-width / set-window-height nudges 10% -> 5% (Mod+-/= and
  Mod+Shift+-/=).
- New preset-window-heights { 1/4, 1/2 } in layout.kdl; Mod+Ctrl+Shift+R
  no longer falls back to the width-preset ladder.
- Mod+Ctrl+Left/Right (and H/L) retargeted swap-window-* ->
  consume-or-expel-window-*, matching Mod+brackets; swap-window now unbound.
Validated with niri validate; live via hot-reload.
2026-10-17 18:15:02 -07:00
dank e2fe36519c Update README.md 2026-10-15 18:18:40 -07:00
dank 7fb6d36801 Update README.md 2026-10-15 18:18:08 -07:00
dank 23901a190d 5matting 2026-10-15 18:10:01 -07:00
dank d015493219 ai disclosure 2026-10-15 18:08:25 -07:00
Frank ae426434bc niri: retire flameshot binds, absolute script paths in spawn-sh
Refs the 2026-10-14 screenshot saga; see commit body.
2026-10-14 17:53:11 -07:00
Frank d767348cfd niri: retire flameshot binds, absolute script paths in spawn-sh
Live census 2026-10-14: every flameshot mode on this box captures via
xdg-desktop-portal-gnome → niri's single-output API (niri#4313) — full
AND screen hang ~15 s and error docked (verified: exit 124, no file).
Replace all six flameshot binds with niri-native equivalents:
all-monitors script (Print/Ctrl+Shift+1/Mod+Shift+S), screenshot-screen
(Alt+Print/Ctrl+Shift+2), interactive screenshot UI (Ctrl+Print/
Ctrl+Shift+3). Absolute script paths everywhere: niri's spawn-sh PATH
is system-only, ~/.local/bin absent — the bare screenshot-desk.sh and
desk.sh binds were silently dead. bats 27/27.
2026-10-14 17:53:09 -07:00
Frank ae12063de9 niri: fix screenshots on 2+ outputs — Mod+Shift+S captures all monitors
flameshot full's portal path hits niri's screenshot_all_outputs
ensure!(outputs.len()==1) (niri#4313); add scripts/screenshot-desk.sh
(per-monitor focus + screenshot-screen), bind Mod+Shift+S, noctalia
settings to Mod+Shift+O, restore screenshot-path. bats 27/27.
2026-10-14 17:35:38 -07:00
Frank 8da6cdc9cd niri: fix screenshots on 2+ outputs — Mod+Shift+S captures all monitors
flameshot full dies docked: its portal path hits niri's
screenshot_all_outputs ensure!(outputs.len()==1) (upstream niri#4313,
niri 26.04), so every Print press on the home desk produces error
bubbles. niri's built-in screenshot UI selects only one output, so add
scripts/screenshot-desk.sh: per-monitor focus + screenshot-screen with
explicit --path, focus restored, one PNG per monitor in
~/Pictures/Screenshots. Bind Mod+Shift+S (Frank's call); noctalia
settings moves to Mod+Shift+O. Restore screenshot-path (was null, now
root-level as config.screenshot_path requires) for UI saves. Live-
verified docked: valid 1920x1080 PNGs for eDP-1 + DP-2, focus restored;
bats 27/27 incl. niri validate on both desk profiles.
2026-10-14 17:21:10 -07:00
Frank 9217ed83f8 niri: move laptop panel (eDP-1) left of ultrawide in home desk profile
Sceptre left edge x=1581 minus laptop width 1920 -> x=-339;
y=-240 bottom-aligns the 1080 panel to the 1440 panel.
2026-10-13 19:49:38 -07:00
Frank 27083f75f1 niri: simplify preset-column-widths to 1/2, 1/5, 2/5, 3/5 2026-10-09 19:35:12 -07:00
Frank 5a1cb81bb9 chore(agent): capture noctalia-bar-layout-edit managed skill 2026-10-09 16:37:46 -07:00
Frank 4d2b024116 chore(agent): capture noctalia/gate/niri memory lessons + secret-audit and system-prompt-retrieval managed skills
learned.md: noctalia v5 bar layering + hot-reload loop; secret-gate self-match convention (quoted literals redacted per the convention the line itself states); niri 26.04 event-stream has no hotplug event. New managed skills: git-repo-secret-audit, omp-system-prompt-retrieval.
2026-10-09 16:37:43 -07:00
Frank 989196f664 chore(gitignore): ignore webcache/ harness web-fetch cache (runtime state) 2026-10-09 16:37:41 -07:00
Frank 0ccdd46a97 docs(agents): add commit hygiene section mirroring serverAppConfigs
Imports the Git Workflow / Testing law from dank/serverAppConfigs: pull+clean tree, atomic early commits, bats+secret gate as commit precondition, push on green, imperative messages with Refs #N.
2026-10-09 16:36:32 -07:00
Frank 9255a8b865 fix(noctalia): move taskbar widget to left section beside workspaces
Bar start = launcher, wallpaper, workspaces, taskbar; center keeps only the cat plugin widget. settings.toml is the GUI-override layer, symlinked from this repo.
2026-10-09 16:36:32 -07:00
Frank 8a68c58078 chore(memory): record faillock sudo-lockout law + mint recovery skill
redact gate pattern literals in the audit prose — the pre-commit gate
self-matches its own documented patterns when quoted verbatim
2026-10-09 15:09:09 -07:00
dank 5026c02982 Merge pull request 'Blankpad DE redesign: desk profiles, keybind rework, Handy fleet wiring' (#2) from blankpad-de-redesign into main 2026-10-09 15:07:48 -07:00
Frank abb8a2a9d0 fix(autoswitch): WorkspacesChanged output-set diff; unit paths; deploy symlinks
- niri 26.04 has no hotplug event: OutputConfigChanged is only an ACK
  (niri-ipc). Watch WorkspacesChanged, diff sorted output set, apply on
  change. Proven live: eDP-1 off/on -> 3 output-set transitions, each
  matched + applied + reloaded.
- unit: %h/.local/bin/desk-autoswitch.sh, quoted Environment, drop
  User/Group (user unit); add desk-autoswitch.sh bin symlink
- desk.sh: silence validate/load-config/notify stdout
- deploy.sh: deploy repo symlinks (find -type l), so .local/bin links land
- docs: event semantics corrected (displays diagram, log)
2026-10-09 14:46:17 -07:00
Frank 286340e786 fix(deploy): skip .AGENTTRASH in packages; deploy repo symlinks (desk.sh); retire base display.kdl
desk.sh: silence niri validate / load-config-file stdout (was leaking 'ok')
2026-10-09 14:43:05 -07:00
Frank 4874d103d7 refactor(niri): retire base display.kdl — runtime display.kdl is desk.sh-owned (symlink to active desk-*.kdl); the include is optional 2026-10-09 14:42:45 -07:00
Frank b441cfda56 docs(DE): full redesign sweep — desk profiles, keybinds, noctalia v5, handy fleet wiring, incident log
- niri: index/config-tree rework, displays.md desk-profile rewrite,
  tips/action-reference/default-bindings refresh (26.04),
  generated keybindings.md (119 bindings)
- noctalia-shell.md: settings.toml lives in ~/.local/state, taskbar
  widget, v5 keybind table (Mod+D/Mod+V/Alt+Tab)
- handy.md: NEW; live nested store shape, fleet endpoint, known
  thinking-model empty-content breaker + verified cure
- log.md: DE redesign entry + pam_faillock sudo-lockout incident
2026-10-09 14:42:08 -07:00
Frank 37554b0fb0 feat(handy): correct store template to nested {settings} shape; fleet wiring patch + apply recipe
live store wired 2026-10-09: provider custom -> frank-secondary @
192.168.0.143:7771, prompt default_improve_transcriptions,
post_process on, self-autostart off (niri owns it)
2026-10-09 14:42:08 -07:00
Frank 4c562d7ed4 feat(noctalia): taskbar widget in bar center (settings.toml) 2026-10-09 14:42:08 -07:00
Frank f63d11de85 feat(blankpad): desk.sh profile switcher, hotplug autoswitch daemon, keybinds doc generator + bats suite
- desk.sh: list/current/switch/cycle/match/capture over cfg/desk-*.kdl
  profiles; apply = relink display.kdl, niri validate (rollback on fail),
  load-config-file, noctalia notification; match scores // requires: lines
  (EDID long names) against live niri msg outputs
- desk-autoswitch.sh: watch niri msg --json event-stream for
  OutputsChanged, debounced desk.sh match --apply, reconnect loop
- blankpad-desk-autoswitch.service: ConditionHost=blankpad user unit
- gen-keybinds.sh: keybinds.kdl -> markdown cheat sheet (sections from
  // --- headers, hotkey-overlay-title preferred over action)
- tests/: 27 bats cases, all green (desk 16, gen-keybinds 6,
  niri-config 5 incl. real niri validate on the assembled tree with
  each desk profile active)
2026-10-09 14:40:26 -07:00
Frank 4ec47a5b7e niri(blankpad): desk-profile system, keybind rework, lid handler, noctalia config tracked
- config.kdl: display include optional=true (desk profiles link it per-desk),
  new optional switch-events.kdl include (per-host, blankpad-only)
- keybinds: swap-window-left/right on Mod+CTRL+H/L+arrows (join/exit columns
  on pass), move-column demoted to Mod+CTRL+Alt+chords; Print trio -> flameshot
  full/gui/screen (CTRL+Shift trio kept); launcher Mod+CTRL+Return -> Mod+D;
  Alt+Tab noctalia window-switcher; Mod+V clipboard panel; Mod+Shift+Space
  handy post-process; Mod+Shift+D desk cycle
- layout: preset column widths 12.5/25/33/50/67/75/87.5%
- desk-1-home.kdl: EDID-identity-keyed positions (M34 + eDP long names; PM1601
  connector placeholder pending EDID capture), focus-at-startup M34-first
- desk-2-portable.kdl: skeleton, EDID capture TODO
- switch-events: lid-close -> noctalia session lock-and-suspend
- autostart: handy --start-hidden (replaces Handy self-autostart)
- noctalia config.toml + settings.toml now tracked
- zz-blankpad display.kdl retired to .AGENTTRASH (superseded by desk-1-home)
niri validate: pass (assembled blankpad layout)
2026-10-09 14:17:21 -07:00
Frank 1d32829428 docs(log): record the full-repo secret audit (clean at 79e780f)
Five layers: live-value match across all 77 revs / 765 reachable blobs; the whole
object store including the 2 dangling blobs (one synthetic sk-shaped fixture,
never committed on any ref); 21 provider shapes with every hit triaged; an
entropy scan of HEAD; all 23 git-lfs payloads (81 MiB) scanned as bytes.
Gate gap noted: hf_/npm_/pypi-/AIza/basic-auth-URL shapes are absent from
.githooks/pre-commit. Quoting the fixture literal in this commit message was
rejected by the gate, so it is described instead.

Also chmod 600 ~/.config/secrets/hf_token_write (was world-readable).
2026-10-09 13:26:04 -07:00
Frank 79e780f280 chore(skills): mint gitea-token-out-of-remote-url + record the store-format law
git 2.56 credential-store parses one URL per line (port included), not the
key=value block shape the man page shows for ~/.git-credentials; a block-format
file yields a silent empty get and git dies at askpass.
2026-10-09 13:21:48 -07:00
Frank 07fda88b1d chore(skills): mint omp-model-id-rename-cutover + record the callsign rename law
Captured from this session's cutover: reference-grep list, the YAML
cross-check regex (the provider label contains a space and parentheses, so a
whitespace split yields false unresolved hits), the per-endpoint 4-token probe
that proves a harness-side id rename is wire-safe, the fit check against the
served window, and the commit shape.
2026-10-09 13:21:37 -07:00
Frank cfed6ef7bb docs(gitea): document client token handling; move the token out of remote URLs
New tools/gitea/client-access.md: the credential file (~/.config/secrets/gitea,
0600) behind a global 'store --file' helper, the git 2.56 credential-store trap
(the key=value block shape parses to an empty get; the file must be one
http://user:token@host:port URL per line), the GIT_TERMINAL_PROMPT=0
verification loop, the lfs.locksverify key that silences the URL echo, and the
rotation procedure. Cross-linked from the gitea index and management pages.

Both workstation remotes are now bare URLs; the token lives in one file.
2026-10-09 13:21:34 -07:00
Frank 69e4cd0c8f chore(gitignore): ignore harness diagnostic report bundles
reports/*.tar.gz bundles logs and session state; pushing them to Gitea would
publish raw transcript material.
2026-10-09 13:19:27 -07:00
Frank a172513a95 docs(log): record the 2026-10-09 working-tree reconciliation
Callsign renames verified against the live endpoints (all three accept the
new request ids and return reasoning_content), compaction endpoint moved and
22 model references checked for integrity, runtime scratch quarantined in
.gitignore, skill libraries shown to be renames with history intact at
12c5e88.
2026-10-09 13:19:19 -07:00
Frank 5b08896e4e chore(memory): snapshot auto-learned memory and renamed workstation skills
--home-blank-.omp--: MEMORY.md +140 / learned.md / memory_summary.md /
raw_memories.md +1002 rewritten by auto-learn after the model rename,
frank-medium split-balance and bottleneck studies. Skills renamed to
single-topic buckets: dotfile-git-workflow -> ghostty-text-aa +
niri-display-rotation + noctalia-theme, handy-service-mgmt ->
handy-flm-inference, inference-runtime -> llama-cpp-parallelism.

--home-blank-Projects-serverAppConfig--: 38 new rollout summaries,
raw_memories.md/MEMORY.md refreshed, skills re-bucketed (bench-protocol,
llm-fleet-model-swap, rootless-quadlet-log-retrieval, orchestration-quadlet).

Per-worktree bucket (wt-20261006-122204) is now gitignored, not committed.
2026-10-09 13:17:53 -07:00
Frank a34322aeb0 refactor(skills): consolidate managed skill library 94 -> 25
The managed-skill library was regenerated: 94 narrow per-incident skills
replaced by 25 broader ones (radiance-*, llamacpp-*, homepage-*, fleet/
endpoint ops). Git renders this as mass delete + mass add because whole
directories changed name; old content stays in history at 12c5e88.

Surface check: the 25 on disk are exactly the skills the harness advertises
this session.
2026-10-09 13:17:48 -07:00
Frank 94c71a016f fix(zsh): source KAGI_API_KEY and HF_TOKEN from 600-perm secret files
Keys live in ~/.config/secrets/{kagi_api_key,hf_token}; .zshrc only reads
them, so the literals leave the shell rc that this repo publishes to Gitea.
2026-10-09 13:17:45 -07:00
Frank 40c37bb9fa niri(blankpad): DP-2 back to landscape ultrawide, HDMI-A-1 bezel flipped
DP-2: transform 90 -> normal with mode 3440x1440@239.999 pinned, moved
(0,0) -> (1581,-600). HDMI-A-1: transform 270 -> 90 (portrait kept, top bezel
now on the left). eDP-1 re-pinned (2400,840) -> (5021,-240) to sit rightmost.
All three positions stay pinned so niri's auto-layout cannot reflow them.
2026-10-09 13:17:45 -07:00
Frank 4e288b518e feat(omp): repoint roles at the renamed models, move compaction to Dankclaw
Role map follows the callsign rename; scout/reviewer/librarian/sonic/task/
security-reviewer/designer all pinned to frank-zealot (was the @smol alias).
New roles: web -> web/searxng, speech -> local/kokoro, judge ->
openrouter/~typesafe/jev-latest:auto, dictation -> local/parakeet-tdt-0.6b-v3,
memory -> frank-zealot.

webSearchOrder (flat list) replaced by the per-role providers.web fallback
chain, kagi first; openrouterVariant: floor added.

Server-side compaction moves off dankserver:7770 to the Dankclaw 3090
endpoint 192.168.0.143:7771, thresholdPercent 70 -> 85, remoteStreamingV2
+ async on, idleTimeoutSeconds 120, maxRetries 10.

TUI: tight, contextLine embedded, splash off, changelogMode summary,
theme dark-terminal/light, read.renderMarkdown + toolResultPreview.
Extensions on: astGrep, vault, secrets, lsp (formatOnWrite,
diagnosticsOnEdit), speechgen, live, contextPromotion, tts/speech voices.
headless: true, autoResume: false.
2026-10-09 13:17:43 -07:00
Frank 0cb002123b refactor(omp): rename fleet models to unit-name callsigns and refit windows
frank-medium -> frank-archon (dankserver), frank-large -> frank-dragoon
(dankclaw-gpu), frank-small -> frank-zealot (dankclaw-3090). The Dankclaw
service/unit names keep the old frank-large spelling; only the OMP model ids
move, per the comments at each entry.

Windows refit to the served context minus the compaction headroom:
  archon  196608 -> 200000 ctx, 32768 -> 16384 maxTokens
  dragoon 200192 -> 217088 ctx, 57344 -> 45056 maxTokens, input +image
  zealot  262144 -> 200704 ctx, 32768 -> 16384 maxTokens
All three now carry compactionModel frank-zealot, reasoningContentField
reasoning_content, and Qwen-recommended sampling in compat.extraBody
(merged last, so it beats the global -1 sampler settings).
2026-10-09 13:17:40 -07:00
Frank 40c7d3c752 chore(gitignore): quarantine agent runtime scratch and per-worktree memory buckets
autoresearch/ runs, agent/predict/ ngram models, local/ artifact dumps, wt/
worktrees and memories/--home-blank-.omp-wt-* buckets are runtime state keyed
on ephemeral paths; none were tracked, so the rules are purely additive.
2026-10-09 13:17:23 -07:00
Frank 12c5e885f1 docs: purge the retired workstation from auto-learned memory and the backup snapshot
Finishes the purge. These two surfaces were left out of the earlier commit
because the memory store is auto-generated, but both are read back into every
future session, so the name was still reaching the agent.

58 sites across 16 files: hostname, both LAN addresses, the SSID. Special-cased
the compound names a blind token swap breaks ('dank@the workstation/dankclaw',
'on the workstation/Dankclaw/Dankserver') and reworded the four that came out
ungrammatical. Facts kept: the hardware inventory of the box, the noctalia
architecture history, and today's own purge lessons all survive intact — only
the identifiers are gone.

Non-memory: the tracked .pre-pull-backup snapshot of a managed skill, whose
live counterpart was already clean.
2026-09-28 16:57:00 -07:00