Latest codebase changes to notedeck
Changes
William Casarin (54):
- nostrverse: change default container from room to space
- nostrverse: add dedicated relay support for multiplayer sync
- nostrverse: defer relay subscription until connection is open
- dave: replace dispatched_user_count with DispatchState state machine
- nostrverse: quick refactors — parse_vec3, self_user, subscription dedup
- nostrverse: break down build_space and sync_scene into focused helpers
- dave: add codex tool events, token usage, and manual compaction
- nostrverse: break down show_room_view and render_editing_panel
- columns: async initial timeline loading to avoid UI stalls
- dave: extract process_events() match arms into standalone functions
- dave: clamp input box height to prevent overflow off-screen
- dave: cycle permission mode badge through Default/Plan/AcceptEdits
- dave: fix context fill bar to use input_tokens only
- dave: keep Done indicator dot on completed sessions
- dave: check for .exe extension in PATH lookup on Windows
- nostrverse: add tilemap support with texture atlas rendering
- dave: click Done indicator dot in session list to dismiss it
- dave: remote session creation via host picker and spawn commands
- dave: fix compact button using wrong session ID format
- dave: make session keybindings match visual order
- dave: show last activity timestamp in status bar
- columns: add NIP-51 people list support (kind 30000)
- columns: add people list creation UI
- dave: sync permission mode between host and observer via nostr
- dave: fix markdown tables breaking layout on small screens
- dave: add “Allow Always” for per-session runtime permission allowlist
- dave: fix markdown tables breaking layout on small screens
- dave: persist focus indicator in kind-31988 session notes
- dave: make auto-steal focus transition-based instead of per-frame
- nostrverse: remove auto-snap-to-parent during free drags
- nostrverse: refactor tilemap textures to data-driven TileStyle
- fix: clear async load tracking when popping timeline routes
- chrome: fix wasm build
- nostrverse: fix rotation editor euler decomposition and tilemap z-fighting
- fix: remove sync NDB queries that defeated async timeline loading
- app: split App trait into update() + render()
- chrome: only call update() on apps that have been opened
- chrome: toggle side menu with Escape key from any app
- nostrverse: add reset button and richer demo tilemap
- nostrverse: fix deleted objects remaining rendered in scene
- chrome: move mobile toolbar from Columns to Chrome level
- chrome: remove unnecessary i32 cast in toolbar tab count
- fix: separate Nostr event identity from CLI session ID for remote spawn
- fix: auto-steal focus retries across frames via AutoStealState enum
- fix: enable remote session kickstart via ndb subscriptions
- chrome: painter-drawn toolbar icons with active/filled state
- fix: toolbar gap, mobile scroll visibility, and welcome screen overlap
- android: enable messages feature in jni build
- settings: remove font size setting, use zoom level only
- dave: add focus queue NEXT badge for mobile navigation
- settings: add note preview to appearance section for zoom preview
- dave: skip input auto-focus on mobile, dismiss Done on focus queue nav
- nostrverse: clean up scene objects when expiring stale users
- nostrverse: reject out-of-order presence events
kernelkind (92):
- refactor(multicast): move multicast to own file
-
refactor(websocket): move
Relayfrom mod.rs -> websocket.rs -
refactor(websocket): rename
Relay->WebsocketConn -
refactor(websocket): move
WebsocketRelay-> websocket.rs - refactor(websocket): rename member variable relay -> conn
- refactor(websocket): add comments & helper
- feat(outbox): id types for outbox
- test(outbox): outbox ids
- feat(outbox): add relay limit objects
- test(outbox): limits
- feat(outbox): misc types
- test(outbox): misc types
- feat(enostr): add profiling crate
-
feat(outbox): add
BroadcastRelay -
feat(outbox): add
Wakeuptrait -
feat(outbox): add
MulticastRelayCache -
feat(outbox): add
QueuedTasks -
feat(outbox): add
OutboxSubscriptions -
test(outbox):
OutboxSubscriptions -
feat(outbox): add
TransparentRelay -
test(outbox):
TransparentRelay -
feat(outbox): add
WebsocketConn::from_wakeup -
feat(outbox): add
CompactionRelay - test(outbox): utils
-
test(outbox):
CompactionRelay - feat(relay): support CLOSED message
-
feat(outbox): add
RelayCoordinator -
test(outbox):
RelayCoordinator -
feat(outbox): add
OutboxSession -
test(outbox):
OutboxSession -
feat(outbox): add
OutboxPool -
feat(outbox): add
OutboxSessionHandler -
feat(outbox): add
OutboxPool::start_sessionhelper -
test(outbox):
OutboxPool - refactor(enostr): expose outbox objects
- test(outbox): add outbox integration tests
- test(outbox): add multi-relay eose cleanup regression
- feat(outbox): improve reconnect backoff handling
- test(outbox): add reconnect backoff and jitter bound coverage
-
feat(outbox): concrete Wakeup impl for
Outbox - tmp: accounts shim
- feat(scoped-subs): add core runtime and key model
- test(scoped-subs): cover runtime upsert, ownership, and account-switch semantics
- feat(scoped-subs): add owner slots and app-facing facade
- test(scoped-subs): verify owner-slot stability and lifecycle drop
- feat(scoped-subs): add account-aware oneshot and publish APIs
-
feat(scoped-subs): add
RemoteApi - feat(scoped-sub): add scoped sub owner keys
- refactor(messages): new event prop Note instead of String
-
feat(outbox): add
NotedeckRef - feat(perf): add profiling macros
- refactor(timeline): split multi_subscriber into thread & timeline subs
- refactor(TMP): pool -> legacy pool shim for commit history
-
feat(outbox-int): add
OutboxPool&ScopedSubsStatetoNotedeck - feat(outbox-int): integration outbox ingestion
-
feat(outbox-int): Notedeck::init pass along
OutboxSession - feat(TMP): TimelineSub::dependers shim (for commit history)
-
refactor(columns): share code
attach_timeline_column -
feat(outbox-int): use
Outboxfor following - feat(outbox-int): use outbox for broadcasting note
- feat(outbox-int): use outbox for people list
- feat(outbox-int): use outbox for sending mutes, unmutes & reports
- feat(outbox-int): use outbox for sending reactions & zaps
- feat(outbox-int): use outbox for sending posts
- feat(outbox-int): use outbox for sending repost
- feat(outbox-int): use outbox to send nip17 message
- feat(accounts): add advertised relay helper
- feat(outbox-int): integrate outbox into relay view
- refactor(thread-subs): extract unsubscribe helpers
- fix(thread-subs): roll back local state on unsubscribe failure
- feat(outbox-int): route remote thread subs through scoped subs
- refactor(outbox-int): manage scoped owners per thread scope depth
- refactor(outbox-int): key local thread state by account
- fix(timeline-subs): preserve local state on ndb unsubscribe failure
- refactor(timeline-subs): key local timeline subs by account
- feat(outbox-int): move remote timeline ownership to scoped subs
- refactor(nip51-set): extract local cache/sub loader
- feat(outbox-int): process outbox events
- feat(outbox-int): only use one FilterState for timeline
- refactor: move legacy event processing to dave
- feat(outbox-int): migrate accounts to use outbox
- test(scoped-subs): validate relay targeting for oneshot and publish APIs
- feat(outbox-int): migrate onboarding to use outbox
- feat(outbox-int): migrate nostrverse to use outbox
- refactor: move legacy RelayPool usage exclusively to dave
-
refactor(outbox-int): remove legacy
Subscriptions - test(refactor): remove legacy RelayPool generator
- refactor(messages): remove unused conversation cache loaders
- feat(nip17): dm relay list helpers
- test(nip17): dm relay list helpers
- feat(messages): ensure selected account DM relay list
- feat(messages): prefetch participant DM relay lists and route outgoing messages
pushed to notedeck:refs/heads/master