Skip to content

Decisions

Every architecture decision record in the Kanade repository, newest numbering as upstream has it. The records live in the repository, so each title links to its file there; the status column is the opening clause of the record’s own status line. Gaps in the sequence are gaps upstream.

Number Title Status
0001 Fixed canvas with an input region instead of resizing the layer window accepted (Phase 0, #2-#5)
0002 Defer fullscreen suppression until niri reports fullscreen state superseded by ADR 0006
0003 Mic and camera privacy from the PipeWire graph accepted (Phase 5, #34)
0004 Wake sources on announcements, poll as fallback accepted (Phase 6, #40)
0005 Privacy indicator outside the Arbiter accepted (design, roadmap 7A-8)
0006 Island on the Top layer, no fullscreen suppression accepted (design, roadmap 7A)
0007 Banners and OSD leave the Island accepted (design, roadmap 8)
0008 Kanade is a shell, not only an island accepted (design)
0009 Orthogonal Activity policy fields accepted (design, roadmap 7A-8)
0010 Split Presentation and Rest right click accepted (design, roadmap 9 Shell essentials, #128)
0011 Kanade adapters where Amane lacks a capability accepted (design, roadmap 9 Shell essentials)
0012 Tray at Rest and item menus accepted (roadmap 9 Shell essentials, #135)
0013 Screen recording with wf-recorder accepted (roadmap 9 Shell essentials, #140)
0014 Running apps matched to desktop entries accepted (roadmap 10 Desktop/data, #143
0015 Local calendars as iCalendar files accepted (roadmap 10 Desktop/data, #150)
0016 Google Calendar account sync accepted (roadmap 10 Desktop/data, #151)
0017 Weather from Open-Meteo accepted (roadmap 10 Desktop/data, #152)
0018 Lock stays in the shell accepted (roadmap 11 Session, #153)
0019 Clipboard sensitive content accepted (roadmap 12 Polish, #162)
0020 Liquid glass over its own Wayland connection superseded by ADR 0049 (no glass remains)
0021 The OSD returns to the Island accepted
0022 Key repeat on the Island superseded by ADR 0034, which moves key repeat into the runtime
0023 Banners come out of the Island accepted
0024 Glass on every surface superseded by ADR 0049
0025 The lock screen over its own connection accepted (amended by ADR 0065 and ADR 0066)
0026 Kanade owns its runtime accepted
0027 The runtime takes over one window at a time accepted
0028 The runtime is ported from Amane accepted
0029 Settings pages by task accepted
0030 The canvas follows the largest body, and list Surfaces their content accepted
0031 The Island and the Dock merge where they share an edge and a side accepted
0032 The privacy cluster rides the Island superseded by ADR 0033 (dots inside the body, none over a fullscreen window)
0033 The privacy cluster is dots inside the Island accepted
0034 Key repeat and the toplevel list are the runtime’s accepted
0035 Derived updates run in the runtime, in order accepted
0036 The Island window’s scene is resolved once accepted
0037 Liquid glass from GPU textures superseded by ADR 0049, which removes the capture
0038 niri is a Service its readers watch accepted
0039 Wallpaper palettes through Matugen accepted
0040 Targeted desktop appearance adapters accepted
0041 Wallpaper colors in apps accepted
0042 Live Activities from outside accepted
0043 Calendar reminders accepted
0044 CalDAV accounts removed by ADR 0045
0045 Events added on the Calendar Surface, and CalDAV removed accepted
0046 Night light through wlsunset accepted
0047 Idle in the shell, with a dim grace accepted (amended by ADR 0065 and ADR 0066)
0048 Frosted Glass is the only material superseded by ADR 0049
0049 The shell is solid black accepted
0050 The shell is a tinted solid accepted
0051 Paper, a second finish accepted
0052 Liquid Glass, a third finish accepted
0053 Settings: keyboard ring, previews and contrast accepted
0054 Liquid Glass refinements accepted
0055 Hooks run user commands on a closed set of events accepted
0056 The audio visualizer through cava accepted
0057 Blur, a fourth finish, by the compositor accepted
0058 Agent hooks, and reposts of a Live Activity coalesced accepted
0059 A notification’s progress is a Live Activity accepted
0060 Focus is one switch over the Modules that already quiet the session accepted
0062 Calendar subscriptions accepted
0063 Synced lyrics accepted
0064 Per-monitor wallpaper accepted
0065 The PAM service, PAM’s messages and the waking key accepted
0066 A short grace after an idle lock accepted
0067 Arrangeable Controls tiles accepted
0070 Banners out of screencasts, by an opt-in niri layer rule accepted
0071 A failed niri config load shows as a failed Live Activity accepted
0072 The dynamic cast target as a verb, and paused casts named accepted
0075 Do Not Disturb may end by itself accepted
0076 More hook events: start, Do Not Disturb, power profile and leaving the session accepted
0077 The session countdown says what would be lost accepted
0078 Focus may turn on by itself for a screen cast accepted
0079 A Banner takes an inline reply accepted
0080 Desktop accessibility from the settings portal accepted
0081 Per-app output routing accepted
0082 DDC/CI brightness for external monitors accepted
0083 An app’s launcher entry progress is a Live Activity accepted
0084 A Power Profile tile, and the tiles left out accepted
0085 A destructive press is confirmed by holding accepted
0086 The color picker is niri’s, as a Capture tile and a verb accepted
0087 The calculator converts units and bases from its own table accepted
0088 Health in Settings, from the doctor’s checks run in the shell accepted
0089 The lock screen shows the keyboard layout in use accepted
0090 Input methods through text-input-v3, in the runtime accepted
0091 The UI scale is applied once, at the runtime’s scale seam accepted
0095 The semantic tree is the input targets, said by the views accepted
0096 ui.describe: structure by default, content on request, off to refuse accepted
0097 kanade ui acts through the runtime’s own input path accepted
0098 kanade ui is refused while locked, and the socket is user-only accepted
0099 The ui module and its verbs accepted
0100 Liquid Glass takes its own drawing out of the copy accepted, experimental and off by default (appearance.refraction)
0101 Satellites bud out of the body as one liquid shape accepted
0105 Gestures are matched by a pure $1 recognizer accepted
0106 Gesture templates live in state, their verbs in config accepted
0107 A gesture runs a Kanade verb through the shell’s own socket accepted
0108 The gesture overlay always lets go accepted
0109 The gesture trail is a glowing line; reduced motion draws a plain one accepted
0110 External Live Activities carry actions and hear them pressed accepted
0111 Voice dictation through the Gemini API accepted
0112 The Launcher runs a closed set of Kanade verbs accepted
0113 Owned events are edited in place and keep what they hold accepted
0114 Clipboard pins and previews live in memory and tmpfs accepted
0115 Clipboard pins persist as plaintext in a private file accepted
0116 Recording targets, audio and pause accepted (Capture, slice 1)
0117 Window recording through niri’s screen cast accepted (Capture, slice 2)
0118 Notification sounds are chosen in layers accepted
0119 Kanade edits niri’s config.kdl on request accepted
0120 SDDM loads a root-owned theme and separate user data accepted
0121 Remove the Liquid Glass finish accepted
0122 The installer ships a binary superseded for binary distribution
0123 The first start is a tour accepted and implemented
0124 Notification silence accepted
0125 The installer wires the chosen Niri session; the first wallpaper is picked accepted
0126 Launcher matches characters within its existing fit tiers accepted
0127 The Launcher ranks on decayed frecency and remembers the queries that launched an item accepted
0128 The Launcher lists sections for an empty query accepted
0129 The Launcher’s actions are a panel, and Ctrl+1..9 press the nth answer accepted
0130 A query nothing answers is offered to the web accepted
0131 The Launcher opens in the Island, or in a window of its own accepted
0132 Column and window controls are a Surface of their own accepted
0133 The niri strip minimap is a Surface of its own accepted
0134 The emoji grid is a Surface, sharing the Launcher’s table accepted
0135 Prefix keys open their Surface accepted
0136 Weather place search and IP lookup, on request accepted
0137 The Desk: read-only faces of Services on the desktop accepted
0138 Screen time accepted
0139 Quicklinks are your own rows in the Launcher accepted
0140 Desk notes: the one Desk face typed into in place accepted
0141 Files is a shelf, not a manager accepted
0142 Screenshots annotate in place, one slice of the editor accepted
0143 Desk faces move by their handle, and stay where they are let go accepted
0144 A moving wallpaper is drawn by the shell, over awww’s still accepted
0145 Usage rings on the Island accepted
0146 Polkit authentication on the Island accepted
0147 Umbriel compositor support and config editor accepted
0148 The Desk’s keyboard is the pointer’s focus accepted
0149 Umbriel starts a shell recovery parent accepted