Skip to content

feat(linux): the window title says "TaskSmack (Administrator)" while the session is (#2728) - #2934

Merged
mgradwohl merged 9 commits into
mainfrom
feat/access-title-2728
Oct 25, 2026
Merged

mgradwohl merged 9 commits into
mainfrom
feat/access-title-2728

Conversation

@mgradwohl

@mgradwohl mgradwohl commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

Description

#2728's window title, on Linux: the OS window title (taskbar, window switcher) says "TaskSmack (Administrator)" while the session is Administrator, and "TaskSmack" otherwise.

Part of #2728. Builds on #2913 (the chip), now merged.

PR Size

Small: 8 files, +101/−5, half of it the test.

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Build/CI improvement

Checklist

Testing

AccessNoticeOnDisplayTest.AnAdministratorSessionTitlesTheWindowSo runs the real shell with the notice, chooses Administrator with a fake broker, and reads the title back with SDL_GetWindowTitle(). Without the change, the title stays "TaskSmack".

🤖 Generated with Claude Code

mgradwohl and others added 8 commits October 24, 2026 16:07
…tor table per platform in code (#2728)

AccessTable holds the rows the startup notice's "What does Administrator add?" and the chip will
show, from the issue's 2026-10-21 inventory: Linux's eight (other users' I/O and memory, signals,
priority and the Realtime I/O class, hidepid, System Information's identifiers, other users'
crashes, service actions) and Windows' ten (TCP and UDP per process, elevated processes' details,
modules, open files, connections and Security tab, actions, dumps, services, all-users startup, the
NVMe log and partition layout), each with what a Standard and an Administrator session get, and
the closing "Never, even as Administrator" row. Linux rows name the MissingPrivilege bit they
explain, and mark the reads the session helper doesn't do yet (needsHelperCoverage).

Tests: every Linux MissingPrivilege bit has a row; every row says what each session gets and
differs between them; Windows rows wait on no helper and name no bit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…henticate for this session holds the helper until TaskSmack closes (#2728)

On Linux the Limited Data notice gives way to AccessNoticeDialog: TaskSmack is running as Standard;
Continue as Standard is the default (Escape too); Authenticate for this session..., with the polkit
prompt named, holds the privileged helper for the session through IPrivilegedBroker::holdForSession()
(#2872) on a worker thread, while the dialog waits, disabled; success closes it, and a dismissed or
refused prompt leaves it open as Standard with a one-line note. Without the helper the option is
disabled and says to install the .deb or .rpm (AccessChoice::decideNotice(), #2876). "What does
Administrator add?" expands the access table (#2899), leaving out the rows the helper doesn't cover
yet, and ends with what is never allowed. "Don't show this again" still only hides it.

Windows keeps the Limited Data notice until TaskSmack can restart itself elevated, which is what
Administrator means there. PanelPlatforms gains privilegedBroker() for the layer (null in a
synthetic run). Tests: test_AccessNoticeDialogRender.cpp, headless. The FAQ describes the notice
and the helper's session lifetime.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lds the helper for the session, Continue as Standard holds nothing (#2728)

AccessNoticeOnDisplayTest runs UILayer and ElevationNoticeLayer in a real Core::Application,
raises OpenElevationNoticeEvent, and presses a choice once the notice is up: on Linux,
Authenticate for this session holds a fake broker's session (one connect) and closes the notice,
and Continue as Standard closes it with no connect. Windows, which keeps the Limited Data notice,
checks its OK. With TASKSMACK_UI_CAPTURE_DIR set it saves the open notice as access-notice.png.
FakeBroker gains an opt-in holdForSession(); by default it still refuses, as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tor, and Standard's opens the notice to switch (#2728)

On Linux the status bar's lock becomes the access chip: a lock and "Standard" while some details
of other users' processes or actions on them are unavailable, clicking it opening the startup
notice again (whatever its "Don't show this again") for Authenticate for this session...; a
shield and "Administrator" when nothing is limited: root, every capability granted, or the helper
held for the session. Windows keeps the plain lock until TaskSmack can restart itself elevated.

PkexecBroker::heldForSession() reads only its atomics, since the chip asks every frame on the UI
thread: no poll(), and a helper that has just exited is noticed by the workers' next call. The icon
header gains ICON_FA_SHIELD_HALVED (U+F3ED, in the bundled Font Awesome).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the session is (#2728)

ShellLayer sets the OS window title (taskbar, window switcher) to "TaskSmack (Administrator)" when
nothing is limited, root or the helper held for the session, and back to "TaskSmack" otherwise, as the
access chip does, and only when that changes. Core::Window::setTitle() and IShellHost::setWindowTitle()
carry it. The custom title bar keeps its own drawn "TaskSmack". Windows follows with its hand-off.

AccessNoticeOnDisplayTest.AnAdministratorSessionTitlesTheWindowSo runs the real shell with the
notice, chooses Administrator with a fake broker, and reads the title back with SDL_GetWindowTitle().

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mgradwohl mgradwohl added enhancement New feature or request ui UI / rendering issues agent:WSL Owned by the Linux/WSL Claude session (bug-fix conveyor) labels Oct 25, 2026
Base automatically changed from feat/access-chip-2728 to main October 25, 2026 14:34
# Conflicts:
#	src/App/ShellLayer.cpp
#	src/App/ShellLayer.h
@mgradwohl
mgradwohl marked this pull request as ready for review October 25, 2026 14:42
@mgradwohl
mgradwohl enabled auto-merge (squash) October 25, 2026 14:42
@github-actions

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@mgradwohl
mgradwohl merged commit 54c3ba9 into main Oct 25, 2026
23 checks passed
@mgradwohl
mgradwohl deleted the feat/access-title-2728 branch October 25, 2026 15:13
mgradwohl added a commit that referenced this pull request Oct 25, 2026
…(Administrator)" in an Administrator session (#2728) (#2949)

#2934 set the OS window title, which the taskbar and window switcher show, but
TaskSmack's own borderless title bar drew a literal "TaskSmack". Core::Window
now keeps the title it set (title()), TitleBarLayer hands it to
TitleBarView::Input::title, and the view draws that.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent:WSL Owned by the Linux/WSL Claude session (bug-fix conveyor) enhancement New feature or request testing ui UI / rendering issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant