Reimplement compose and add tiling windows
This commit is contained in:
157
artifacts/workspace_interface_plan.md
Normal file
157
artifacts/workspace_interface_plan.md
Normal file
@@ -0,0 +1,157 @@
|
||||
# GIA Workspace Interface Plan
|
||||
|
||||
## Goals
|
||||
|
||||
- Replace page-by-page navigation with a workspace shell that can open any major surface as a widget.
|
||||
- Keep transport quirks behind shared adapters so UI code deals in people, sessions, messages, PS, MS, PSC, and MSC.
|
||||
- Make widget loading, live updates, and history browsing shared primitives instead of page-specific implementations.
|
||||
|
||||
## Interface Map
|
||||
|
||||
### 1. Workspace Shell
|
||||
|
||||
- One grid workspace shell owns widget layout, persistence, focus, close, restore, and launch.
|
||||
- A launcher surface replaces the current nav-as-destination approach.
|
||||
- Every major area can render as:
|
||||
- page
|
||||
- widget
|
||||
- embeddable fragment
|
||||
|
||||
### 2. Core Widgets
|
||||
|
||||
- Compose widget:
|
||||
- simple thread viewer
|
||||
- simple outbound composer
|
||||
- reply target
|
||||
- attachment strip
|
||||
- live MS/PS chips
|
||||
- Contact launcher widget:
|
||||
- search
|
||||
- recent contacts
|
||||
- open thread widget
|
||||
- create/match contact
|
||||
- Message history browser:
|
||||
- long-range session browsing
|
||||
- filters by service, person, session, direction, attachments, date
|
||||
- open selected history in a compose/thread widget
|
||||
- Person intelligence widget:
|
||||
- current PS summary
|
||||
- current MS summary
|
||||
- PSC/MSC highlights
|
||||
- links into evidence and history
|
||||
- Session evidence widget:
|
||||
- timeline of events
|
||||
- annotated durations
|
||||
- state transitions
|
||||
- Insight workbench widget:
|
||||
- hypothesis cards
|
||||
- mitigation planning
|
||||
- evidence drill-down
|
||||
- Help/reference widget:
|
||||
- PS/MS glossary
|
||||
- PSC/MSC explanations
|
||||
- research basis
|
||||
|
||||
### 3. Behavioral Surfaces
|
||||
|
||||
- PS lane:
|
||||
- unavailable -> available -> typing -> typing_stopped
|
||||
- duration chips and transition stats
|
||||
- MS lane:
|
||||
- sent -> delivered -> read -> responded
|
||||
- duration chips and transition stats
|
||||
- PSC surface:
|
||||
- correlation patterns within PS sequences
|
||||
- return-window priority, abandoned typing, repeated hesitation
|
||||
- MSC surface:
|
||||
- correlation patterns within MS sequences
|
||||
- reply delay shifts, asymmetry, reciprocity, timing escalation
|
||||
- Combined inference surface:
|
||||
- PSC + MSC combinations with evidence, confidence, and caveats
|
||||
|
||||
## Shared Technical Primitives
|
||||
|
||||
### Widget Contract
|
||||
|
||||
Every widget-capable surface should declare:
|
||||
|
||||
- title
|
||||
- icon
|
||||
- source URL
|
||||
- refresh URL
|
||||
- websocket topic or polling policy
|
||||
- default grid dimensions
|
||||
- optional launch context
|
||||
|
||||
### Shared Client Modules
|
||||
|
||||
- `workspace-shell`
|
||||
- open widget from URL
|
||||
- replace/update widget
|
||||
- compact grid
|
||||
- persist layout
|
||||
- `widget-loader`
|
||||
- HTMX/bootstrap helper for hidden widget loads
|
||||
- one primitive reused by page bootstraps and launch actions
|
||||
- `live-channel`
|
||||
- shared websocket subscription lifecycle
|
||||
- reconnect and backoff
|
||||
- channel-to-widget routing
|
||||
- `history-browser`
|
||||
- filters, pagination, range selection, transcript fetch
|
||||
- `compose-client`
|
||||
- message list render/update
|
||||
- outbound send
|
||||
- attachment handling
|
||||
- reply targeting
|
||||
|
||||
### Shared Server Patterns
|
||||
|
||||
- Each surface provides `page`, `widget`, and `fragment` modes from one context builder where possible.
|
||||
- Widget launch URLs are generated centrally, not manually concatenated in templates.
|
||||
- Behavioral computations read shared PS/MS event abstractions, not transport names.
|
||||
- Live updates publish transport-neutral event payloads.
|
||||
|
||||
## Implementation Phases
|
||||
|
||||
### Phase 1. Workspace Foundation
|
||||
|
||||
- Extract workspace shell logic from inline page scripts into shared assets.
|
||||
- Standardize the hidden widget loader include.
|
||||
- Slim launcher widgets so they do not dump entire datasets into one partial.
|
||||
- Add a reusable message history browser endpoint and widget shell.
|
||||
|
||||
### Phase 2. Compose Rewrite
|
||||
|
||||
- Keep compose to:
|
||||
- thread
|
||||
- send
|
||||
- reply
|
||||
- attachment preview
|
||||
- live state indicators
|
||||
- Move history/export/receipt/debug extras out into dedicated widgets.
|
||||
- Keep page mode and widget mode on the same client code.
|
||||
|
||||
### Phase 3. Behavioral Workspace
|
||||
|
||||
- Add PS/MS event browser widgets.
|
||||
- Add PSC/MSC evidence widgets with drill-down into raw events.
|
||||
- Add person/session dashboards that combine evidence instead of hiding it behind static pages.
|
||||
|
||||
### Phase 4. Live Update Layer
|
||||
|
||||
- Replace page-local polling with a shared websocket abstraction.
|
||||
- Route updates by widget topic:
|
||||
- compose thread
|
||||
- message state
|
||||
- presence state
|
||||
- analysis refresh
|
||||
- Keep HTMX for request/response actions and server-rendered fragments.
|
||||
|
||||
## Immediate Debt Kill List
|
||||
|
||||
- Large launcher partials that dump whole universes of contacts or objects.
|
||||
- Inline workspace shell JS in templates.
|
||||
- Page-specific widget bootstraps that repeat the same hidden HTMX loader block.
|
||||
- Mixed transport-specific UI conditionals in templates.
|
||||
- Heavy detail views that combine history, inference, controls, and diagnostics in one render.
|
||||
Reference in New Issue
Block a user