Repository navigation
Releases
Stellwerk 0.11.1
The pages' tabs in the status column instead of the dots below the pages.
- Tabs: which page shows is a row of tabs in the status column, below the hub's state: an icon for
each page (a robot for the agents, a calendar), the one that shows marked as the design system marks a
tab. A tap on one goes there, besides a swipe and the arrow keys. Each is 64 px wide, so five fit, for
the pages still to come, and low enough that the hardware and the plans' usage still fit below; the
signature at the foot moved up a little for that. Swiped away while something waits, the agents' tab
carries how much, in the colour of attention. The dots at the foot of the pages, which looked like part
of the middle column, are gone. Screen readers hear tabs and their pages. - Icons: robot and calendar-alt from the same Font Awesome Free 5 set as the others.
- Checks:
tools/check-screens.tstaps both tabs and reads which one is selected.
Install
Download stellwerk-0.11.1.zip and SHA256SUMS, then in PowerShell:
(Get-FileHash stellwerk-0.11.1.zip).Hash # the same as in SHA256SUMS
Expand-Archive stellwerk-0.11.1.zip -DestinationPath .
cd stellwerk-0.11.1
npm ci --omit=devThen follow the installation steps in the README. Check that the package was built by this repository's release workflow:
gh attestation verify stellwerk-0.11.1.zip --repo Azentrius/stellwerkStellwerk 0.11.0
A second page, a swipe away: the calendars' events and the open tasks, with the GitHub issues assigned to
you.
- Pages to swipe between: left of the status column, which stays, the display has a second page when a
calendar or the issues are set up. A finger drawn sideways goes there and back, and the page snaps in
place; the arrow keys do the same. It is the browser's own scrolling, so up and down still scroll the
lists, also over a list that scrolls itself. Dots at the foot say which page shows. The first page is
the one of before, to the pixel. - Requests first: a new request or a new answer due in the app takes the display back to the first
page at once. Swiped away while something waits, the first page's dot carries how much. Going to rest
takes it back too, and a swipe that wakes the display turns no page. A page out of view takes no taps
and no focus. - Calendar:
stellwerk calendar add <name>takes a calendar's link for subscribing (iCalendar from
Outlook, Google, Nextcloud or iCloud;webcal://counts ashttps://), with--useran app password
as well, tries it once and keeps it like a token incalendars.json, readable by you only;listand
removetoo. The page shows the event running now and the next one, then today and the next six days.
The hub asks each link every five minutes (calendarIntervalSeconds): GET only, https only, no
redirects, at most 2 MB, and keeps of each event its title, times and whether it lasts all day. Places,
descriptions and people stay out; the link is never logged and never sent to the display. Its own
strict reader of iCalendar (no new dependency) takes time zones, also Windows' names as Outlook writes
them, repetitions from daily to yearly with their days, counts and ends, exceptions and moved
occurrences, and the clock's changes as RFC 5545 says; what it does not know it names once in the log. - Tasks: the open tasks of a Nextcloud task list (its export link with
?export, with an app
password), overdue ones first, with their due date and a mark for a high priority; and with
githubIssuesthe open issues assigned to you in the owner's repositories (the token needs "Issues:
Read"), which a tap opens in the browser: a fifth form of link the hub opens,
https://github.com/<owner>/<repo>/issues/<n>, only for an issue it lists. stellwerk statusnames the calendars set up;stellwerk teardownasks about them with the
tokens and keys.- Tests:
- The reader of iCalendar: whole files only, folded lines and escapes, zones by name, Windows name,
Outlook's city names and a file's own definition, a zone it does not know, the clock's changes,
repetitions weekly, every other day until a day, on the last Friday, on the last working day, on the
31st, yearly, an excluded, a moved and a cancelled occurrence, additional dates, open tasks; under the
computer's zone and under UTC. - The calendars: what is kept and in which order, GET without redirects, the app password only to its
own list, a failed question that keeps what was there and says why once, every kind of failure, the
link never in the log or the state; the store readable by you only. - The issues: only when asked for, only the owner's, no pull requests; a refusal that keeps the list and
leaves the pull requests alone. The hub end to end: both on the display without link or password, an
issue opened by a tap, one it does not list not. - The calendar page's order of things and when the display goes back to the first page.
- In Edge (
tools/check-screens.ts, also in CI): swipes both ways, also over lists that scroll
themselves, up and down that turn no page, the arrow keys, a tap on an issue, back to the first page
for a new request, the dot that says what waits, at rest, a waking swipe, one page without a
calendar.
- The reader of iCalendar: whole files only, folded lines and escapes, zones by name, Windows name,
Install
Download stellwerk-0.11.0.zip and SHA256SUMS, then in PowerShell:
(Get-FileHash stellwerk-0.11.0.zip).Hash # the same as in SHA256SUMS
Expand-Archive stellwerk-0.11.0.zip -DestinationPath .
cd stellwerk-0.11.0
npm ci --omit=devThen follow the installation steps in the README. Check that the package was built by this repository's release workflow:
gh attestation verify stellwerk-0.11.0.zip --repo Azentrius/stellwerkStellwerk 0.10.1
Drafts and conflicts are small icons in front of the title, so the title keeps its room.
- Marks in front of the title: a conflict with its base is an attention triangle and a draft a
pencil, both in front of the title, a conflict first. Before, "Draft" stood in front of the title and
"Conflict" next to the time, both as labels with their word, which left less of the title and the
repository. The word stays as the icon's name for screen readers; a draft's title is still quieter.
Dependabot's line shows a conflict among its pull requests the same way, after its arrow. - Tests: in Edge (
tools/check-columns.ts), a draft with a conflict among Dependabot's has both marks
as icons in front of its title and no label, and so has the line in front of its text.
Install
Download stellwerk-0.10.1.zip and SHA256SUMS, then in PowerShell:
(Get-FileHash stellwerk-0.10.1.zip).Hash # the same as in SHA256SUMS
Expand-Archive stellwerk-0.10.1.zip -DestinationPath .
cd stellwerk-0.10.1
npm ci --omit=devThen follow the installation steps in the README. Check that the package was built by this repository's release workflow:
gh attestation verify stellwerk-0.10.1.zip --repo Azentrius/stellwerkStellwerk 0.10.0
Dependabot's pull requests of a repository stand behind one line, and drafts and conflicts can be seen.
- Dependabot's updates in one line: the pull requests of
dependabot[bot]in one repository stand
behind one line, such as "4 dependency updates", where the newest of them stands, with the worst checks
among them and the time of the newest. A tap opens it in place and shows them below it, each opening in
the browser with a tap as before; it closes again a minute after the last touch, like the sessions at
rest. A repository with only one keeps it as a line of its own. No new kind of link: the hub opens
nothing more than before. - Drafts: "Draft" stands in front of a draft's title, which is quieter. It used to stand at the end
of the details, where a long author cut it off. - Conflicts: "Conflict" next to the time when GitHub cannot merge a pull request for conflicts with
its base, also on Dependabot's line when one of them has one. For this the hub asks each open pull
request on its own (/repos/{owner}/{repo}/pulls/{number}, which alone says whether it can be merged),
with the same token and permissions; while GitHub is still working that out, what was known stays. A
new conflict wakes the display at rest. - Tests:
- The lines of the list: Dependabot's of a repository together where the newest stands, one alone on
its own, other bots and people never together; the worst checks, any conflict, the newest time. - The hub asks each pull request on its own and reads a conflict; one GitHub is still working out
keeps what was known; a failed or odd answer fails the round and keeps the last list. - In Edge (
tools/check-columns.ts): two of Dependabot behind one line, which a press held over a
render, Enter and Space open and close, and a press on one of them opens it in the browser.
- The lines of the list: Dependabot's of a repository together where the newest stands, one alone on
Install
Download stellwerk-0.10.0.zip and SHA256SUMS, then in PowerShell:
(Get-FileHash stellwerk-0.10.0.zip).Hash # the same as in SHA256SUMS
Expand-Archive stellwerk-0.10.0.zip -DestinationPath .
cd stellwerk-0.10.0
npm ci --omit=devThen follow the installation steps in the README. Check that the package was built by this repository's release workflow:
gh attestation verify stellwerk-0.10.0.zip --repo Azentrius/stellwerkStellwerk 0.9.0
Stellwerk sets itself up and removes itself in one go, says how it stands and when a newer
LibreHardwareMonitor is due, a failing monitor opens in Uptime Kuma, and the tones are quieter at night.
stellwerk setup: everything in one go, each step showing what it changes and asking first
(--yesfor all): Claude Code's hooks, the start with Windows, Codex' hooks when Codex is used here,
and in a terminal with administrator rights the firewall rule and LibreHardwareMonitor (in any other it
names the two commands); then it starts Stellwerk and showsstellwerk status.stellwerk teardown: the counterpart, each step asking first as well: it stops Stellwerk, removes
the start with Windows and the hooks of Claude Code and Codex, the GitHub token and the API key of
Uptime Kuma only when you say so (never with--yes), and with administrator rights LibreHardwareMonitor
and the firewall rule (in any other terminal it names the two commands). Settings, the hook token, the
audit log and the releases stay, with the command that removes them.stellwerk hooks uninstallno
longer writes a settings file where there was none.stellwerk status: what runs and what is set up, without changing anything: whether the hub
answers and which release it runs (from its log) and its task starts, the display, LibreHardwareMonitor
and its version, and whether the hooks of Claude Code (with the app's session id, the token set) and of
Codex point at the running release. What needs doing is marked!!with the command for it, and the
command then ends with 1. Task states come from Task Scheduler itself, in any language.- A due LibreHardwareMonitor:
stellwerk hardware installnotes the version it set up
(%LOCALAPPDATA%\stellwerk\hardware.json). When a newer Stellwerk pins a newer one, the status column
says so, with the command to run as administrator. - Quieter at night: with sound on, the tones for a new request and a reminder play at a quarter of
their loudness betweennightFromandnightTo.nightSoundsets it:"quiet"(the default),
"off"for none,"on"as by day. - A failing monitor opens in Uptime Kuma: a tap on it opens its page there
(<uptimeKumaUrl>/dashboard/<id>) in the default browser, the fourth form of link the hub opens. The
hub builds it from the address set up and a monitor it shows as failing; the display names only its id. - Tests:
stellwerk setupagainst a made-up Windows: the hooks, the two logon tasks, nothing as administrator
without its rights, started, how it stands.stellwerk teardownagainst a made-up Windows: stopped first, the two logon tasks and the hooks gone,
the token variable removed, the GitHub token kept with--yes, what needs an administrator named;
as administrator the firewall rule removed and no LibreHardwareMonitor that is not there. The made-up
Windows now has its own Program Files, so no test can reach a LibreHardwareMonitor set up for real.stellwerk statusagainst a made-up Windows: all well; an old hub, old Codex hooks, hooks without the
app's id, a closed display; missing tasks and an older LibreHardwareMonitor that still starts at logon.- The due version from the hub to the display, its note in both languages.
- The tones: how loud by day and at night for each
nightSound, none without sound; the setting and
what it refuses; the hub handing it to the display. - The monitor's link and what it refuses; the hub opening only a failing monitor it shows.
Install
Download stellwerk-0.9.0.zip and SHA256SUMS, then in PowerShell:
(Get-FileHash stellwerk-0.9.0.zip).Hash # the same as in SHA256SUMS
Expand-Archive stellwerk-0.9.0.zip -DestinationPath .
cd stellwerk-0.9.0
npm ci --omit=devThen follow the installation steps in the README. Check that the package was built by this repository's release workflow:
gh attestation verify stellwerk-0.9.0.zip --repo Azentrius/stellwerkStellwerk 0.8.0
LibreHardwareMonitor runs while Stellwerk runs, Stellwerk starts, stops and restarts with one command,
the display says where a tap opens something, and it stays readable at night.
- LibreHardwareMonitor with the hub: the hub runs the task "Stellwerk hardware" when it starts, runs
it again when LibreHardwareMonitor has not answered for a minute (at most every two minutes), and ends it
when it stops. The task no longer starts at logon by itself; runstellwerk hardware installagain as
administrator once to register it so. It still runs LibreHardwareMonitor with administrator rights, from
its folder in Program Files, which only administrators can change; the hub needs none to run or end it. - Starting, not failing: while LibreHardwareMonitor starts (it takes about 20 s), the status column
says "Hardware: monitor starting …" instead of a warning. The hint for a monitor that does not run says
that the hub starts it again, orstellwerk restart. stellwerk start,stopandrestart: they run or end the tasks in order, without administrator
rights: the hub, which then runs LibreHardwareMonitor, and the display; stopping the other way round,
LibreHardwareMonitor's task last.- "Opening in Codex …": after a tap that opens a session or a pull request, the display says for a few
seconds where it opens: in Claude, in Codex or in the browser. The hub's answer to the display now names
where it opened. An app can take a few seconds to show a session (Codex the longest, as it loads the
chat first), and without a word on the display a second tap opened it twice. - Readable at night: at rest at night the columns are dimmed to a fifth and the clock's column to
three tenths, a little darker than at rest by day (a quarter and four tenths). Before, everything went to
six hundredths, and on the display nothing could be made out. - Tests: when the hub runs the task again and when not, a task that fails, the task without a start
at logon (also registered for real once, then deleted), the hub running and ending it, and the commands
against a made-up Windows: their order, a missing task, a hub that does not follow its task. The hub's
answer for a Claude session, a Codex chat and a pull request; in a real Edge the words after a tap on the
button in a session's details and on a pull request, and the night's dimming.
Install
Download stellwerk-0.8.0.zip and SHA256SUMS, then in PowerShell:
(Get-FileHash stellwerk-0.8.0.zip).Hash # the same as in SHA256SUMS
Expand-Archive stellwerk-0.8.0.zip -DestinationPath .
cd stellwerk-0.8.0
npm ci --omit=devThen follow the installation steps in the README. Check that the package was built by this repository's release workflow:
gh attestation verify stellwerk-0.8.0.zip --repo Azentrius/stellwerkStellwerk 0.7.0
A tap opens a session in its app and a pull request in the browser; the last decisions stand where the
requests are, and only those of the last day.
-
Open it where it is: in a session's details a button opens it in its app, a session of the Claude
desktop app there and a chat of the Codex app in Codex; a tap on a session waiting for an answer opens
it where the answer is given, a tap on a pull request opens it in the default browser. The display only
names what to open; the hub builds the link from what it shows and hands it to the Windows shell
(explorer.exe, the link as its only argument), only as one of three forms
(claude://claude.ai/epitaxy/local_…,codex://threads/<id>,
https://github.com/<owner>/<repo>/pull/<n>) and at most one a second. That is the one program the hub
starts. The desktop app's own id of a session comes with its hooks in a new header
(X-Stellwerk-App-SessionfromCLAUDE_CODE_HOST_SESSION_ID): runstellwerk hooks installonce.
The hub keeps that id over a restart and never sends it to the display. Claude Code in a terminal and
Codex' command line have no app to open. -
At the foot of the waiting column: the line with the last decisions moved from the status column to
the foot of "Waiting for you", above GitHub's line. Open, the decisions lie over the requests, from the
line upwards, and scroll there; the requests keep their place. A tap on the line closes them, as do a
minute without a touch and a new request, which is never hidden behind them. -
Only the last 24 hours: older decisions are left out, and without any of the last day the line is
not there. Before, the last ten stayed however old they were, and a test days ago looked like what had
just happened. -
Tests: which decisions are shown, the line closing at once, where the line stands on the page; in a
real Edge the line at the foot of the column, the decisions over the requests without moving them, a
new request folding them, and two decisions older than a day left out. For opening: the three forms and
what they refuse, the app's id from the header (forged ones left out, kept over a restart), the
display's message over the WebSocket (unknown sessions, pull requests the hub does not list, links the
display writes, one a second, a failing shell), and in a real Edge the button in the details, a session
waiting for an answer and a pull request, each pressed over a render.
Install
Download stellwerk-0.7.0.zip and SHA256SUMS, then in PowerShell:
(Get-FileHash stellwerk-0.7.0.zip).Hash # the same as in SHA256SUMS
Expand-Archive stellwerk-0.7.0.zip -DestinationPath .
cd stellwerk-0.7.0
npm ci --omit=devThen follow the installation steps in the README. Check that the package was built by this repository's release workflow:
gh attestation verify stellwerk-0.7.0.zip --repo Azentrius/stellwerkStellwerk 0.6.4
stellwerk update finds the display's Edge in a profile path with umlauts, and starts a display again
on the screen given when its task names no full placement.
- Values for PowerShell in any letters: the setup commands hand values (a path, a task's name, the
token) to PowerShell on standard input as Base64 of their UTF-8, and it decodes them, so the console's
code page no longer changes them. Before, a profile folder likeC:\Users\Jörg\…arrived as another
path: the display's running Edge counted as none, so a moved display was run again without waiting for
the old one to close, and could open where it was. A user environment variable is read back the same
way. - A display task without a full placement: with
--screen, a display task that names no position,
no size or neither is now ended and run again on the screen given, as for a move; before, its display
stayed where it was. Without--screensuch a task still stops the update before anything changes,
and a display that is on the screen given already still only loads the new page. - Tests: the Edge count against a real, headless Edge with profile folders in umlauts and spaces, in
any case, against other and shorter paths and after it closed; and the update for a display task
without its position, its size or both, with and without--screen, in the order of its steps.
Install
Download stellwerk-0.6.4.zip and SHA256SUMS, then in PowerShell:
(Get-FileHash stellwerk-0.6.4.zip).Hash # the same as in SHA256SUMS
Expand-Archive stellwerk-0.6.4.zip -DestinationPath .
cd stellwerk-0.6.4
npm ci --omit=devThen follow the installation steps in the README. Check that the package was built by this repository's release workflow:
gh attestation verify stellwerk-0.6.4.zip --repo Azentrius/stellwerkStellwerk 0.6.3
stellwerk update starts a display moved to another screen again there, and no longer removes a
release that Codex' hooks may still run.
- Codex' hooks that cannot be read: a
hooks.jsonthat is there but cannot be read, or is no JSON
object, stops the update before it changes anything. Before, it counted as holding no Stellwerk
hooks: the update left them on the previous release's forwarder and then removed that release. If
the file cannot be read only at the end, the previous releases stay. A missing file, or hooks of
other programs only, work as before. - A display moved to another screen (
--screennaming another one) is started again there: once
the hub runs, the update ends the display's task, waits until the Edge with the display's own profile
has closed (other Edge windows stay open) and runs the task again. Before, only the task changed, and
the display stayed where it was until the next logon. On its screen the display still loads the new
page by itself. When it does not close, cannot be counted or its task does not run, the update says
what to do and keeps the previous releases. - Tests for both, and for the order of the update's steps: the setup, Codex' hooks, the hub, the
display, then the previous releases.
Install
Download stellwerk-0.6.3.zip and SHA256SUMS, then in PowerShell:
(Get-FileHash stellwerk-0.6.3.zip).Hash # the same as in SHA256SUMS
Expand-Archive stellwerk-0.6.3.zip -DestinationPath .
cd stellwerk-0.6.3
npm ci --omit=devThen follow the installation steps in the README. Check that the package was built by this repository's release workflow:
gh attestation verify stellwerk-0.6.3.zip --repo Azentrius/stellwerkStellwerk 0.6.2
Up to date with the other Azentrius repositories: the shared design file, the documentation, and
templates for issues and pull requests.
- The shared design file:
ui/azentrius.cssis the design system's current one again, as in the
other Azentrius add-ons (only its path to Red Hat Mono is Stellwerk's own). It adds spacing tokens for
sections, columns and cards, the dot of the word mark after a page title, a large button and a small
line above a section title for project pages, and keeps helpers placed in a table that scrolls
sideways inside it. The display looks the same. - README, roadmap and security policy: a section on known limits; after an update,
npm linkin the
new release's folder, so the command runs the new version; Codex' command line and the note of a newer
release under "What it does"; the releases folder in the list of files; whatautostart uninstall
leaves running; the four browser checks under "Development". The security policy names the supported
versions, how fixes are announced and what matters most instellwerk update. - Issue and pull request templates and a contributing guide: a bug report and a feature request
form, security problems only as a private report, andCONTRIBUTING.mdwith the commands, the tests
and the rules the hub keeps. - Package metadata:
package.jsonhas the repository's description, homepage, issue tracker and
topics. - The command's help says where every setting is described (the README's "Configuration") instead
of listing some of them. - The test job requires a dated changelog section for the version, as the release does.
Install
Download stellwerk-0.6.2.zip and SHA256SUMS, then in PowerShell:
(Get-FileHash stellwerk-0.6.2.zip).Hash # the same as in SHA256SUMS
Expand-Archive stellwerk-0.6.2.zip -DestinationPath .
cd stellwerk-0.6.2
npm ci --omit=devThen follow the installation steps in the README. Check that the package was built by this repository's release workflow:
gh attestation verify stellwerk-0.6.2.zip --repo Azentrius/stellwerk