feat(identity): session identity + source attribution (overlay) - #250
Closed
patroza wants to merge 17 commits into
Closed
feat(identity): session identity + source attribution (overlay)#250patroza wants to merge 17 commits into
patroza wants to merge 17 commits into
Conversation
patroza
force-pushed
the
fork/identity
branch
6 times, most recently
from
July 31, 2026 10:24
6c1a23c to
bcb98eb
Compare
patroza
force-pushed
the
fork/changes
branch
2 times, most recently
from
July 31, 2026 10:58
a36ceec to
8c9fe41
Compare
patroza
force-pushed
the
fork/identity
branch
2 times, most recently
from
July 31, 2026 11:27
534fc25 to
0752e4b
Compare
patroza
force-pushed
the
fork/identity
branch
5 times, most recently
from
August 4, 2026 05:00
196e261 to
b2655f8
Compare
patroza
force-pushed
the
fork/identity
branch
2 times, most recently
from
August 4, 2026 11:04
29b2408 to
d80bee0
Compare
patroza
force-pushed
the
fork/identity
branch
2 times, most recently
from
August 4, 2026 11:45
07fe785 to
b1779b7
Compare
) Mine/Ours now keeps threads with no person tags (legacy, channel-only stamps like desktop, identity-disabled servers). Theirs is only threads that have person attribution excluding the session claim. Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com> Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com> (cherry picked from commit 31ea163)
…pply Identity product reapply had dropped the mobile model-selection helper while new-task-flow still imported it, breaking mobile typecheck. (cherry picked from commit 1080cb3)
Created looked only at origin, so Theirs+Created included threads you joined (origin ≠ you) while Theirs+Both required you to be absent from every person tag — Created could show more than Both. Classify involvement first, then narrow by role so Both is always the superset. Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com> (cherry picked from commit 35af605)
Keep mobile-showcase landscape harness typing from fork/changes when rebasing the identity overlay; identity reapply had dropped the field. (cherry picked from commit 59dd846)
Keep checkForAppUpdateOnLaunch wired after product-merging snooze actions into the identity HomeRouteScreen. (cherry picked from commit 00fd93a)
Production showcase deep links use t3code://; identity reapply left t3code-dev:// expectations that fail after restack compose. (cherry picked from commit 4a3b314)
Jira and GitHub treat an unset/empty identity map like an unmapped actor: no agent turns. Only mapped people may drive the host via those webhooks. Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com> Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com> (cherry picked from commit 8be7e5b)
The header said claims were a process-local Ref with "Persistence later". `layerPersisted` has since made server claims SQLite-backed (SessionIdentityClaimRepository + migration 037), with the Ref demoted to a read-through cache. Only the residual-free `layer` used by the CLI and tests is still memory-only. Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> (cherry picked from commit 26e478f)
The server read T3_IDENTITY_MAP_PATH once at layer construction, so adding or removing a person meant restarting t3code-server. The map is now re-checked on a 60s TTL and applies in place. Polls rather than watches: the map arrives over virtiofs from the host, where inotify propagation is not something to depend on. An ino/size/mtime fingerprint keeps an untouched file from being re-parsed every TTL. Two safety rules, because a reload can now fail in production where startup could not: - A re-read that yields no people never disables an already-enabled map. `enabled === false` turns the operate gate off entirely, so a truncated or unparseable file would have failed open. The last good map keeps serving, marked unhealthy, and the next TTL retries. - requireOperateClaim no longer deletes the persisted claim of a person who is absent from the map. A half-written file can still parse as a valid map with a subset of people, and that delete is not reversible. Refusing operate is the gate; membership is re-checked on every operate, so a stale row grants nothing. Startup behaviour is unchanged: a missing or empty map still means the feature is off, and removing T3_IDENTITY_MAP_PATH remains the way to disable the gate. Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> (cherry picked from commit 3b2203f)
…292) Port the Board Ownership filter (Anyone/Mine/Theirs + relation sub-filter) into classic Sidebar v1, sharing localStorage with v2. Default the filter to Mine on web v1/v2 and mobile so the inbox starts on your work; unattributed threads still count as Mine. Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com> Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com> (cherry picked from commit aa2b21f)
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
Identity reapply dropped forward-compat wrappers for config issues and available editors while keeping ServerProviders on ForwardCompatibleArray.
|
Drained into |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Permanent integration overlay (do not merge into fork/changes)
Identity remains a registered integration overlay composed into
fork/integration.It must stay draft and base on
fork/changes— never squash-merge into the product layer.This PR replaces the accidentally merged #203. Child work (participation badge #247,
Jira queue/inline replies #248) already lives on
fork/identity.Stack role
fork/changesfork/identity.github/pr-stack.jsonintegrationOverlaysDo not merge
Managed draft lock should keep this open as draft. Compose applies this tip into
fork/integration.