summaryrefslogtreecommitdiff
path: root/ui/lib/components/Message.svelte
Commit message (Collapse)AuthorAge
* Render message markdown to HTML inside of `<Message />`.Owen Jacobson2025-08-19
| | | | This simplifies data flow, at the potential expense of re-rendering HTML more often than strictly necessary. Requiring every path that produces a message-shaped object to pre-render markdown made things more interdependent than intended and slowed me down.
* Remove the (entirely unused and unusable) `body` property from `Message`.Owen Jacobson2025-07-08
|
* tools/reformatOwen Jacobson2025-06-11
|
* Render messages as ghosts when there's a pending delete, too.Owen Jacobson2025-05-06
|
* Render "ghost" messages for unsent messages.Owen Jacobson2025-05-06
| | | | | | | | | | | There is a subtle race conditon in this code, which is likely not fixable without a protocol change: * Ghost messages can disappear before their "real" message replacement shows up, if the client finishes sending (i.e., receives an HTTP response on the POST) before the server delivers the real message. * Ghost messages can be duplicated briefly, if the client receives the real message before the client finishes sending. Both happen in practice; we make no ordering guarantees between requests. To aviod this, we'd to give clients a way to correlate pending sends with received messages. This would require fundamentally the same capabilities, like per-operation nonces, that preventing duplicate operations will require.
* Don't scroll all the time as messages are addedKit La Touche2025-02-25
| | | | Only once on load, then once per new message.
* Hoist global state access out of individual components.Owen Jacobson2025-02-21
| | | | | | | | Access to "global" (maybe "external?") state is now handled at the top level of the component hierarchy, in `+page.svelte`, `+layout.svelte`, and their associated scripts. State is otherwise passed down through props, and changes are passed up through callbacks. This is - hopefully - groundwork for refactoring state management a bit. I wanted to move access to state out to a smaller number of places, so that I have fewer places to update to implement reconnect logic. My broader goal is to make it easier to refactor these kinds of external side effects, as well, though no such changes are in this branch. This change also makes testing a mile easier, since tests can interact with props and callbacks instead of emulating the whole HTTP request stack and the Pilcrow API. This change removes do-very-little tests.
* npm run formatOwen Jacobson2025-01-11
|
* Just oh so many stylesKit La Touche2025-01-01
|
* Strip out Tailwind etcKit La Touche2024-12-30
|
* Merge branch 'main' into wip/stylizeKit La Touche2024-12-03
|\
| * Use Luxon dates on Message store and componentKit La Touche2024-11-29
| | | | | | | | | | | | This includes jamming the "at" of a message into a data- attribute on the Message component, so that it can later be used by parent components via Plain Old Javascript and the .dataset attribute of an HTML node.
* | Add styling for pre blocks in messagesKit La Touche2024-11-30
| |
* | Merge branch 'main' into wip/stylizeKit La Touche2024-11-28
|\|
| * Best-guess an ARIA role for this element.Owen Jacobson2024-11-26
| | | | | | | | Svelte's lint complains if you add interaction to a div but don't give that div an ARIA role.
| * HTML-ify message bodies once, on receipt, and not every time the message is ↵Owen Jacobson2024-11-15
| | | | | | | | | | | | rendered. ~16% of the `hi development` channel's rendering time was taken up on this.
* | Merge branch 'main' into wip/stylizeKit La Touche2024-11-11
|\|
| * Deletable messages.Owen Jacobson2024-11-08
| | | | | | | | This also fixes some rendering jank with the message timestamp chip.
* | Style blockquotesKit La Touche2024-11-11
| |
* | Try to style blockquotesKit La Touche2024-11-11
|/ | | | But it's not working. Why?
* File off some rough spots in the DOM.Owen Jacobson2024-11-05
| | | | | | * We had an unused layer of divs in the main UI. * The <div id="app"> div was superfluous with the body-level div in app.html. * Some formatting changes in one component?? Weird.
* Fix width and scrollingKit La Touche2024-11-04
| | | | | | | This is some jinbodger CSS. I really need to do a unified-CSS sweep. I start to see why per-component CSS is bad, too; there are so many long-distance interactions needed!
* Run spaces-style prettier formattingKit La Touche2024-11-03
|
* Svelte 5: go through and use runes in components, pages, and layouts.Owen Jacobson2024-11-03
| | | | Does not use runes in stores (yet).
* Bare-bones multiline inputOwen Jacobson2024-11-03
|
* Address outstanding lint issues.Owen Jacobson2024-11-02
|
* Run prettier, make lint part of pre-commitOwen Jacobson2024-11-02
|
* Ensure that the message HTML is re-rendered when the message markdown changes.Owen Jacobson2024-11-02
| | | | This was causing messages to persist when switching channels, due to the work minimization performed by Svelte.
* Merge remote-tracking branch 'origin/wip/mobile'Owen Jacobson2024-11-02
|\
| * Actually sanitize rendered MarkdownKit La Touche2024-11-02
| |
* | Render empty messages as full-height linesOwen Jacobson2024-11-02
|/
* Fix scrolling new messages into view, and layout of the bottom edge of ↵Owen Jacobson2024-10-31
| | | | message runs.
* Nicer marginsOwen Jacobson2024-10-30
|
* Coalesce adjacent messages by the same author into runs, to consolidate ↵Owen Jacobson2024-10-30
| | | | message display.
* Hoist the UI one step up furtherOwen Jacobson2024-10-10