Skip to content

Releases: T-Crypt/aphotic-hypr

Aphotic 2.0.7

Choose a tag to compare

@T-Crypt T-Crypt released this 28 Sep 00:34
b9a9bfa

Aphotic 2.0.7 is a UI overhaul. A new bar skin, Signal line, carries one look across every surface of the shell: the bar, notch, popouts, Command Center, Settings, launcher, notifications, OSD, session menu, switcher, AI chat, wallpaper picker, lock screen and login greeter. Every surface also opens and closes on the same motion. Pick it in Settings > Bar > Signal line. The login screen moves to the Aphotic greeter too. This release also builds more of the shell only while you use it, and gives plugins a versioned runtime API.

The Signal overhaul

  • Signal line bar. A slim, near-black bar with a hairline along its inner edge. The hairline lights under the active workspace and under your pointer. Workspaces are dots that stretch into a capsule when active.
  • Notch and popouts grow out of the bar. The notch hangs from the bar in the bar's own tone and curves into it. Popouts scale out of the bar edge, and switching between them slides the new content in from the direction you moved.
  • One open and close motion. Surfaces scale and fade in with a slight overshoot, close faster than they open, and cascade their lists in. The session menu, OSD, keybinds sheet, switcher and notifications all use it.
  • Command Center as a frosted bento. The dashboard opens over a dimmed, blurred desktop. Today, weather, calendar, media, timer and controls sit in matching cards. An accent bar glides under the active tab, and the mouse wheel steps through tabs.
  • Settings with depth. The rail groups categories under Look, Desktop, Input, Services and System. Theme cards preview each theme's wallpaper and ring the active one.
  • Launcher from the bottom edge. Under Signal line, the launcher rises as a sheet from the bottom of the screen. Other skins keep the centred launcher.
  • Everything else follows. Notifications, OSD sliders (now with their value), session tiles, the keybinds sheet, the workspace surface and switcher, AI chat, Flow, and the wallpaper picker all take the same cards, hairlines and tinted chips.

Login and lock

  • The Aphotic greeter is your login screen. Installing or updating switches the login screen from sddm to the Aphotic greeter (greetd). sddm stays installed, and aphotic displaymanager switch sddm --confirm-tested puts it back; later updates respect that choice. ./install.sh --keep-sddm skips the switch, Omarchy keeps its own login, and the switch only happens once the greeter and start-hyprland are in place. Minimal installs now get greetd too.
  • The greeter and lock screen match. Both show your wallpaper blurred under a large clock, with a glass password card. Locking and signing in look like one screen.
  • Kinder login retries. After a wrong password the greeter says so, keeps your username, and asks for the password again. Keys you type while greetd is busy land in the field.
  • Restart and shut down sit on the greeter, and the lock screen reacts as you type and shakes on a wrong password.
  • The greeter compositor reads a Lua config and drops the options Hyprland 0.56 removed, so no config-error banner covers the login screen.

Lighter at idle

  • Built only while open. The package installer and notch plugin tiles now exist only while they are on screen.
  • Every repeating timer reports. aphotic runtime lists live and idle timers and their wakeups per minute, and aphotic perf snapshot records them.
  • No hidden animation. The Performance tab's network sparkline stops while Command Center is closed, and the last always-on layer shadows are gone.

Plugins and runtime

  • Versioned plugin API. A manifest's [api] section names the calls a plugin uses. Disabling or removing a plugin revokes them on the spot. aphotic plugin api lists the contract.
  • One surface controller. Aphotic decides which surfaces can share the screen, so one primary surface opens at a time and a prompt that needs an answer keeps the keyboard.
  • Runtime context. aphotic context set focus|dev|game|present tells the shell what you are doing. Game and present unmount plugin overlays such as pets.
  • Contention you can see. When a resource needs attention, the bar and notch show it, and a notification offers to open Flow.

Also

  • The package installer lists official packages before AUR results.
  • The VPN pane expands ~ paths and shows why a connect failed.
  • The llama-swap stats poller no longer reloads a model you unloaded.
  • Agent tracking reads v2 hook records alongside v1.
  • ./uninstall.sh is executable again, and it puts sddm back when it removes the greeter.

Aphotic 2.0.6

Choose a tag to compare

@T-Crypt T-Crypt released this 24 Sep 13:27

Aphotic 2.0.6 puts local models first. When a model loads on your own machine, the desktop notices within milliseconds, steps its effects and plugins aside, and gives them back when the model unloads. This release also makes the installer finish on a plain Arch machine, recover when an upstream package is broken, and tell us when something breaks, and it cuts what the shell costs at idle.

Local AI

  • Inference mode. When a model loads, Aphotic enters inference mode within 28 ms of the request. It turns off blur, shadows and animations, and pauses the plugin surfaces that opt out (pet, spectrum, live wallpaper); it does not remove them. It gives the loaded model the top claim on the GPU. A toast names the model. Twenty seconds after the model unloads, everything returns. Settings > AI has an Auto/Off switch, and qs ipc call inference enter|exit|auto|off|status drives it by hand. If the shell crashes mid-inference, the next start restores your effects.
  • llama-swap support. Set a llama-swap host in Settings > AI. Each model it runs becomes a Resource Engine claim with its measured VRAM, and shows up in Flow. Suspend unloads a model through llama-swap's own API. Aphotic reads model names and embedding models from your llama-swap config at runtime, so it names no models itself.
  • One claimant for every backend. Ollama and llama-swap now share one claim engine. Along the way it fixed two Ollama bugs: models running in system RAM now claim memory, and Suspend on a RAM claim asks for the right model.
  • Fewer, better prompts. The Resource Engine asks you only when there is a decision to make. A model that fits no longer triggers a prompt about the compositor or the shell, and only a workload with a profile, such as a game, can open one.
  • AI notch tab (aphotic-plugins). A new llama-swap plugin adds an AI tab to the notch: loaded models, VRAM, live tokens per second and context, the inference mode toggle, and unload. The Agent Graph and Agent Audit now show llama-swap models by name.

Performance

  • Wallpapers decode at screen size. A bundled 7680x4320 wallpaper held 127 MiB of VRAM per image, with two images per screen for the crossfade. It now holds 25 MiB. Smaller wallpapers decode at their own size, and only the visible image keeps a texture.
  • Quieter at idle. The shell used to start around 100 small processes a minute while you did nothing. The bar reads caps and num lock from the keyboard LEDs instead of asking Hyprland every 2 seconds, CPU and memory are read in process, local model hosts are polled over HTTP in process, and the local IP refreshes when the network changes. While a model generates, llama-swap's log lines no longer reach the shell, only its load and unload events.
  • aphotic perf. aphotic perf snapshot records per-process GPU memory and load, plus the shell's memory and CPU, with the change since the last run. aphotic perf budget checks the result against the budgets in the repo.

Install

  • Plain Arch works again. On a machine without yay, the installer captured yay's whole build log as the helper's name, and every package then failed. A fresh Arch install now runs to the end.
  • Stable by default. ./install.sh installs the newest release, not the development branch. --channel edge gives you main, and aphotic update follows the channel you picked.
  • A way past broken upstream packages. When an official package is broken on the day you install, the installer offers the Arch Linux Archive snapshot from the last day every Aphotic package installed cleanly, in one full-system transaction. Your pacman.conf is never edited, and aphotic doctor tells you when it is safe to update again.
  • Failures you can act on. A failed package gets one plain sentence on the likely cause (keyring, mirror, conflict, removed upstream, broken AUR build) and its last error lines. You can then send a redacted report to GitHub, but only after you have seen it and said yes.
  • Scripted installs get the whole desktop. With no options and no terminal, the installer now copies Aphotic's configs instead of leaving bare Hyprland.
  • We hear about breakage first. A nightly check installs every package, including Hyprland and the GPU stacks, and runs the real installer in a fresh Arch container. When upstream breaks something, it opens an issue before a user hits it.
  • NVIDIA. The installer finds any installed NVIDIA driver, including legacy branches, beta drivers and distro module packages, before it touches anything. Pascal, Maxwell and older cards keep their driver, or get the exact legacy-branch command to run.
  • Minimal gets what the shell uses. The volume keys, the tray applets the bar opens, the default icon, cursor and GTK themes, and the icon fonts all install on minimal. Super+M opens the session menu.
  • More reliable installs. Repo packages install with pacman even without an AUR helper, a stale AUR build cache recovers on its own, and wallust installs from its upstream release.

Also

  • Flow gains a shell-activity layer. The Plugins pane scales to long lists. The capsule is the default bar on a fresh install, and several wallpaper picker and capsule layout fixes land.
  • KDE Connect starts as a supervised service when it is installed.
  • Three startup TypeErrors are gone.
  • The lock screen and the theme and palette watchers stop waking the shell several times a second.

v2.0.5

Choose a tag to compare

@T-Crypt T-Crypt released this 11 Sep 02:53
29b697f

What's Changed

  • Record which harness and model answered by @T-Crypt in #158
  • Package the wallpaper set in use, and pin each theme's real default by @T-Crypt in #159
  • Name the copyright holder, align the license, reserve the name by @T-Crypt in #160
  • Workspace host for plugin tools by @T-Crypt in #161
  • Workspace keybind, bound only while a plugin provides the plane by @T-Crypt in #163
  • README: one centred contents block by @T-Crypt in #162
  • Bar icons focus and cycle an app's windows by @T-Crypt in #164
  • Alt+Tab switcher that does not move focus while you cycle by @T-Crypt in #165
  • Color GTK4 and libadwaita apps with the active theme by @T-Crypt in #166
  • plugin: validate a manifest before it ever installs by @T-Crypt in #167
  • site: add public Jekyll documentation by @T-Crypt in #169
  • site: deploy manual and wiki refresh builds by @T-Crypt in #170
  • doctor: report checkout drift, lay the groundwork for desired-state plugins by @T-Crypt in #171
  • status, diff: read-only drift reporting on top of state.sh by @T-Crypt in #172
  • reconcile, rollback: converge plugin state, undo it if needed by @T-Crypt in #173
  • gitignore: exclude local agent-tooling indexes by @T-Crypt in #174
  • readme: point to the doc site instead of duplicating the wiki by @T-Crypt in #176
  • Fix shell service unit bug and missing profile backfill by @T-Crypt in #177
  • Fix media notification false positives by @T-Crypt in #178
  • epiq: land project.json on main by @T-Crypt in #180
  • feat: add graphify knowledge graph and team setup by @T-Crypt in #181
  • fix: plugins pane background lag and browse-list clipping by @T-Crypt in #182
  • chore: stop tracking generated graph output and local agent state by @T-Crypt in #183
  • fix: stop two tests killing the developer's running shell by @T-Crypt in #185
  • Wallpaper picker layouts, video wallpapers, background plugin surface by @T-Crypt in #186
  • Wallpaper picker is SUPER+W, not SUPER+SHIFT+W by @T-Crypt in #187
  • Fix dock picker navigation, and make the picker snappier by @T-Crypt in #188
  • fix media notification false positives by @T-Crypt in #184
  • Add native Aphotic Flow resource view by @T-Crypt in #189
  • Flow workload passports, action receipts and contention preview by @T-Crypt in #190
  • Give the Resource Engine CPU and memory claims to arbitrate by @T-Crypt in #191
  • Cast chrome shadows from the shape, not the content by @T-Crypt in #192

Full Changelog: v2.0.4...v2.0.5

v2.0.4

Choose a tag to compare

@T-Crypt T-Crypt released this 06 Sep 17:54
7321e62

Three drawn pets for the desktop, an update flow that tells you when a release wants packages you do not have, and a release banner you can click.

Upgrading

From inside your Aphotic checkout:

aphotic sync

That pulls the repo, re-deploys the shell config, and refreshes every installed plugin. It restarts the shell, so the bar and panels blink out for a moment. Settings > About has the same thing behind its Sync update button.

aphotic sync installs no packages, because that needs sudo and a resolved profile. When a release adds one to a profile, it says so and you run:

./install.sh

which keeps the profile and layers you already chose.

To look without changing anything:

aphotic sync --check

Coming from 2.0.3 or earlier, aphotic update still works and still does what it did.

Desktop pets

The pet plugin ships three drawn pets. It is off until you ask for it:

aphotic plugin install pet

Pick one in Settings > Appearance > Desktop Pet. Drag it anywhere and it stays where you put it, wanders a short way around that spot, looks toward your cursor, and opens a menu of things to run when you click it. It sits under every window.

Each pet is repainted to your colours, so it changes with the theme and with a wallpaper you generate colours from.

Lumen

A sealed lamp adrift in the dark. Its shell stays dark and its light takes your colour, so it shifts the most between themes.

Lumen: resting, greeting, hopping, working, done

Cipher

A developer at a panel that floats beside him. The seams in his jacket and the lines on the panel carry your colour.

Cipher: resting, greeting, hopping, working, done

Kozumi

A small figure at a laptop she carries. The trim on her coat and the red through her hair take your colour; her face does not.

Kozumi: resting, greeting, hopping, working, done

The three vector pets that came before them, Miko, Aphotid and Clip, are gone. A config naming one lands on its nearest replacement, so a desktop that had one keeps a pet.

More pets, and the material each was built from, live in T-Crypt/aphotic-pets.

Also in this release

The release banner now carries a way into About instead of being a line of text about a page you then have to find. Notification action buttons are drawn at last: the server always advertised support for them and nothing showed them, so an app offering "Reply" or "Open" gave you a popup with no way to take it up.

Safe mode and a way back when the shell will not start. A fifth bar style and a user-editable widget list. One icon resolver for every app icon, with user overrides. A rebuilt wallpaper picker. Aphotic Actions, one list of everything you can ask the shell to do, reachable from the notch's Commands tab and from aphotic action <id>. Quota bars, subagents and click-to-focus on the agent notch tile.

What's Changed

  • Fix/omarchy pacman guard by @T-Crypt in #129
  • perf: gate disk and network usage polling behind real visibility by @T-Crypt in #133
  • greetd: opt-in Quickshell greeter preview scaffold by @T-Crypt in #130
  • settings: center About pane, fix Plugins tab scroll glitches by @T-Crypt in #132
  • bar: fix settings popout closing on filler-entry hover by @T-Crypt in #131
  • wallpaper picker: blurred band backdrop, beveled cards, HUD rail by @T-Crypt in #134
  • wallpaper picker: wrap the strip, rotate the rail, fix click targeting by @T-Crypt in #136
  • plugins pane: settings shortcut on installed rows by @T-Crypt in #137
  • icons: one resolver for every app icon, with user overrides by @T-Crypt in #138
  • add a copyright notice by @T-Crypt in #139
  • Fullscreen overlay surface kind, and a screensaver timeout to trigger it by @T-Crypt in #140
  • Safe mode, and a way back when the shell will not start by @T-Crypt in #141
  • bar: a user-editable widget list, shaped for a plugin surface kind by @T-Crypt in #142
  • settings: manage bar widgets from the Bar pane by @T-Crypt in #143
  • settings: draw the Aphotic mark on the bar widget logo row by @T-Crypt in #144
  • bar: stop the workspace pill clipping its own glow square by @T-Crypt in #145
  • overlay: a free anchor, for a surface the user drags by @T-Crypt in #146
  • install: ship Qt's extra image decoders in both base profiles by @T-Crypt in #147
  • wallpaper picker: preview the wallpaper the strip is centred on by @T-Crypt in #148
  • agent-events: wire UserPromptSubmit and PreCompact/PostCompact by @T-Crypt in #149
  • pet_action surface + session-to-window focus by @T-Crypt in #150
  • Agent notch tile: quota bars, subagents, and a way into a waiting session by @T-Crypt in #151
  • Aphotic Actions, and the notch's Commands tab by @T-Crypt in #152
  • Settings preset rows can show a choice that is not ready yet by @T-Crypt in #153
  • wallpaper picker: commit the wallpaper the strip is heading for by @T-Crypt in #154
  • 2.0.4, and a Desktop Pets section in the README by @T-Crypt in #155
  • About: a config-only sync that says when packages are missing by @T-Crypt in #156

Plugins: aphotic-plugins#29 replaces the vector pets with the three drawn ones. Pets: aphotic-pets#1 lays out the public catalogue.

Full Changelog: v2.0.3...v2.0.4

v2.0.3

Choose a tag to compare

@T-Crypt T-Crypt released this 05 Sep 07:11
5961c4e

What's Changed

  • install: fix Omarchy compatibility, bump to 2.0.3 by @T-Crypt in #127
omarchy_2

Full Changelog: v2.0.2...v2.0.3

v2.0.2

Choose a tag to compare

@T-Crypt T-Crypt released this 04 Sep 16:01
7112769

What's Changed

  • release: 2.0.2, capsule bar style and a notch that opens off the bar's edge by @T-Crypt in #113
  • security: profile registrant for engagement mode by @T-Crypt in #114
  • notifs: clear the whole notification history in one press by @T-Crypt in #115
  • notch: drop the gauges from the processes tile by @T-Crypt in #116
  • plugin: add the overlay surface kind (manifest v3.4) by @T-Crypt in #117
  • fix: wallpaper filmstrip scrolls to both ends and previews on settle by @T-Crypt in #119
  • notch: delete two files nothing can reach by @T-Crypt in #120
  • fix: construct WallpaperCycle and DevDrift, which never ran by @T-Crypt in #118
  • install: add cava to the minimal profile by @T-Crypt in #121
  • install: soften the VM warning to match what a guest actually does by @T-Crypt in #123
  • readme: suggest testing the install in a Proxmox guest by @T-Crypt in #122
  • ci: issue triage, weekly digest, and wiki drift automation by @T-Crypt in #125
  • themes: make community themes actually installable by @T-Crypt in #124

Full Changelog: v2.0.1...v2.0.2

v2.0.1

Choose a tag to compare

@T-Crypt T-Crypt released this 04 Sep 05:08
ba9e7d9

What's Changed

  • Fix install.sh --config-only leaving a duplicate qs -c aphotic running by @T-Crypt in #56
  • Roadmap: update-awareness, distribution path, four-pillars positioning by @T-Crypt in #54
  • Flesh out About page; add advisory system-update awareness by @T-Crypt in #55
  • format README.md by @T-Crypt in #53
  • Trim README to the wiki; fix ai/exploit layer rows and iso claim by @T-Crypt in #58
  • Fix fresh-install wallpaper never applying on first boot by @T-Crypt in #59
  • Update star history URLs to modern format by @T-Crypt in #62
  • Wire matugen up as a real second colour engine by @T-Crypt in #66
  • test: add comprehensive coverage for agent_hook critical paths by @T-Crypt in #61
  • Add docstrings and inline comments to key Python modules by @T-Crypt in #63
  • Enhance Star History display with responsive images by @T-Crypt in #67
  • Phase 0: profile state machine, Resource Engine, event bus, state snapshot/restore by @T-Crypt in #68
  • ai: make Ollama the Resource Engine's first real claimant by @T-Crypt in #69
  • profile: see graphics processes too, not just compute by @T-Crypt in #71
  • gaming: the profile MVP, and the first real AI-vs-Gaming negotiation by @T-Crypt in #72
  • gaming: stop holding gamemoded resident, and write down what bit us by @T-Crypt in #73
  • profiles: finish the openvpn decision, drop a dead key, give all four pillars a gate by @T-Crypt in #74
  • resource engine: name a claimant that can actually stop, and stop blaming the shell by @T-Crypt in #75
  • system usage: stop polling GPU and temperature readings nothing is displaying by @T-Crypt in #76
  • settings: let the agent graph's catch-up history be scoped by @T-Crypt in #77
  • README: banner, resolved image assets, grouped gallery by @T-Crypt in #78
  • dashboard: build the agent graph surface only once its tab is picked by @T-Crypt in #79
  • plugin: add aphotic plugin update, so a bugfix release is pickable by @T-Crypt in #80
  • resource engine: stop a lost declaration killing arbitration silently by @T-Crypt in #81
  • install: one guided flow for a first-time user, not twelve scattered prompts by @T-Crypt in #83
  • shell daemon: reap the Process children a restart leaves behind by @T-Crypt in #82
  • plugin list: flag installed files that have drifted from the registry by @T-Crypt in #85
  • agent providers: scope the core event tail, and stop the comment lying by @T-Crypt in #84
  • depth: drive every breathing glow from one low-rate clock by @T-Crypt in #86
  • profiles: ship Thunar's thumbnailer, so the file manager shows previews by @T-Crypt in #87
  • README: restore the Star History chart; drop the coverage report by @T-Crypt in #88
  • wallpapers: curate each theme's own set, drop the fetched extra-pool by @T-Crypt in #89
  • themes: download community themes from a remote index, same shape as plugins by @T-Crypt in #90
  • themes: clamp dynamic palette drift to each theme's own margins by @T-Crypt in #92
  • README: add callout alerts and keybindings section by @T-Crypt in #91
  • plugin: restore dependency installation, and let a manifest name its own installer by @T-Crypt in #93
  • settings: add Advanced category and live-apply keyboard layout (Language feature) by @T-Crypt in #94
  • README: expand the gallery to cover the current UI by @T-Crypt in #95
  • ai: separate chat providers from harnesses and from the ai layer by @T-Crypt in #96
  • install: make a large package install distinguishable from a hang by @T-Crypt in #98
  • install: skip and report an optional package failure instead of aborting by @T-Crypt in #99
  • dashboard: drive plugin tabs off PluginRegistry generically by @T-Crypt in #97
  • dashboard: stop clicks inside the border from dismissing it by @T-Crypt in #100
  • notch: base-shell dynamic island with per-layer opt-in tabs by @T-Crypt in #101
  • plugin: refuse an install this shell has no host for by @T-Crypt in #105
  • plugin: bring the surface registry, profile/settings/cli capabilities and Dev drift to main by @T-Crypt in #109
  • plugin: let a plugin contribute a chat provider (PLG-01a) by @T-Crypt in #110
  • install: detect AMD GPUs and install the drivers they need by @T-Crypt in #111

Full Changelog: v2.0.0...v2.0.1

v2.0.0 — Modular plugin architecture

Choose a tag to compare

@T-Crypt T-Crypt released this 31 Aug 00:40
dcbad2e

A rewritten install.sh that defaults to zero prompts, and the start of a real modular plugin architecture: AI capabilities are no longer bundled into the ai layer — each one is now independently installable and removable, the same way a third-party plugin would be.

⚠️ If you're upgrading from before 2.0.0, read this first

Claude Code, Codex, and OpenCode agent-hook wiring, and Agent Graph, no longer install automatically with the ai layer. They're opt-in plugins now. If you had live per-session agent tracking in the bar/dashboard before, git pull && ./install.sh (or --config-only) will not bring it back on its own — you'll just lose it silently otherwise. Run this once after updating:

aphotic plugin install claude-hooks     # or codex-hooks / opencode-hooks, matching whichever harness you use
aphotic plugin install agent-graph      # if you want the Dashboard's live tool-call graph back too

Each is independent — install only the ones for the harness(es) you actually use. aphotic plugin list --remote shows everything currently available. See the README's Plugin System section for the full picture, or the Install section's upgrade callout for the short version.

Highlights

Modular plugin architecture — Aphotic base is now shell + rice/theming + Settings + core Quickshell modules only. A plugin is a directory with a plugin.toml manifest (manifest v3) declaring exactly what it is and what it touches:

  • [ui.dashboard_tab] lets a plugin contribute a real Command Center tab, loaded dynamically at runtime — no shell rebuild to add or remove one. Agent Graph is the flagship example, fully extracted out of the base shell.
  • The new [harness] table (the harness-hook capability) is for a plugin that wires itself into a different program's own config instead of reacting to an Aphotic-internal event — exactly what Claude Code, Codex, and OpenCode's agent-hook wiring needed. Install/enable runs the plugin's wire script; disable/remove runs unwire, since the "enabled" state lives in the harness's own config file, not something Aphotic can gate on its own.
  • Bar-tab harness icons now follow plugin install state, not live process presence — install only codex-hooks and you'll see only the Codex icon, even if Claude Code happens to be running too.

install.sh rewritten as an orchestrator over lib/install/*.sh stage modules instead of one growing monolithic script. Running it with no flags now installs the daily-driver setup (full profile, no optional layers) with zero prompts; the old interactive wizard is still there via --opt-in. The WiFi-powersave prompt is gone entirely — it interrupted the install for a system tweak with no bearing on whether the desktop actually works.

--strip-conflicts/--keep-conflicts — a prior rice's leftover waybar/rofi/dunst/etc. gets offered for removal before install, instead of silently fighting Aphotic's own bar/launcher/notification center for the same role (#41).

Also in this release

  • Two real config-preservation bugs fixed: ~/.config/hypr/monitors.lua and ~/.config/gtk-3.0/settings.ini were silently overwritten by every install.sh/--config-only run (#45)
  • Fixed yay failing to land on PATH on a fresh/torn-down system (stale/empty pacman sync databases before the AUR build)
  • Fixed a stale-pacman-db install failure ([ERROR] - firefox install had failed..., #41)
  • Fixed the "Hyprland was started without start-hyprland" warning on login
  • AiProviders' Claude/Codex/Ollama auto-probe is now gated behind the installer's ai layer, instead of probing for CLIs that were never installed and logging noise for anyone without that layer

Known open item

yay not landing on PATH after the above fix has one more unresolved report (#45) — likely an existing paru install resolving first (not a bug) or an environment-specific issue, still being triaged with the reporter.

Full history: the README Roadmap section.

v1.2.0 — Agent Graph

Choose a tag to compare

@T-Crypt T-Crypt released this 29 Aug 23:59
5f6146e

A live Agent Graph tab for Claude Code sessions, Hyprland-native release banners, and the agent stack fully split behind its own opt-in install layer.

Highlights

Agent Graph — every Bash/Read/Edit call your Claude Code session makes lands on a live, zoomable node graph as it happens, colored by tool category and session and fading with recency. Finished sessions aren't gone — scrub back through the whole run with the replay transport, now animated instead of snapping to the end state:

agent-polish.mp4

aphotic whatsnew — Hyprland-native release-note banners (hyprctl notify, the same mechanism Hyprland uses for its own announcements), shown once automatically the first time you land on a new version.

Opt-in: how the agent stack turns on

None of this installs or runs unless you ask for it. It all lives behind the installer's ai layer:

  • At install time, the interactive wizard now leads with a preset menu (Everything / Daily driver / Cherry-pick) instead of walking every layer question cold — picking Everything or hand-enabling ai is what turns this on. Scriptable installs use install.sh --with ai (or --with gaming,dev,ai,exploit etc.) instead of the prompts.
  • What "on" actually does: install.sh wires Claude Code's hooks into ~/.claude/settings.json (merged with jq, never clobbering hooks you already have) and enables a 15-minute local usage-tracking timer. Nothing here reads or transmits prompts/responses — only aggregate token counts and tool-call metadata (name, duration, session id) ever leave the hook.
  • On the shell side, services/InstallProfile.qml reads aphotic.toml's [install] layers and gates every AI surface on it — the bar's agent icon, AI Chat, Intelligence, and the new Agent Graph tab are absent, not just idle, when the layer is off. A fresh git clone with no aphotic.toml yet is treated as "on" so a first-time qs -c aphotic run still shows the full shell.
  • Turning it off is symmetric — de-select ai on a re-run of install.sh (or aphotic ai / edit aphotic.toml directly) and the installer removes the hook entries it previously added and disables the timer. Nothing is left half-wired.

See docs/AGENT_TRACKING.md for the full contract (event schema, the three files the hook writes, replay format) if you're extending it or wiring up a second provider.

Also in this release

  • Dock bar: fixed pointer input dying outside a narrow band in the middle of the pill, and window-overlay/right-edge icon clipping
  • Dock bar: scroll-to-volume and real per-app status icons
  • Media bar icon: right-click opens the player; live per-session agent status wired into the popout
  • CLI: fixed a duplicate-daemon spawn, an SDDM permission edge case, and aphotic ai profile handling
  • Installer: stopped forcing nvidia-open-dkms on top of an already-installed driver
  • A beta-status disclaimer, plus assorted stale-README fixes

Full history: docs/ROADMAP.md and the README Roadmap section.


Note: this release also folds in the last batch of work from the now-retired test staging branch — see CONTRIBUTING.md for the current (PR-only, direct-to-main) workflow going forward.