summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Flatten nested `channel` and `message` structs in events and API responses.Owen Jacobson2024-10-09
| | | | This structure didn't accomplish anything and made certain refactorings harder.
* All kinds of stylingKit La Touche2024-10-08
|
* Style more thingsKit La Touche2024-10-08
|
* Rough in create forms at bottomKit La Touche2024-10-08
|
* Remove Flowbite, add Skeleton, add Markdown renderingKit La Touche2024-10-08
|
* Merge branch 'wip/boot'Owen Jacobson2024-10-05
|\
| * Separate `/api/boot` into its own module.Owen Jacobson2024-10-05
| |
| * Use `/api/boot` to bootstrap the client.Owen Jacobson2024-10-05
| | | | | | | | | | | | | | | | | | | | | | The client now takes an initial snapshot from the response to `/api/boot`, then picks up the event stream at the immediately-successive event to the moment the snapshot was taken. This commit removes the following unused endpoints: * `/api/channels` (GET) * `/api/channels/:channel/messages` (GET) The information therein is now part of the boot response. We can always add 'em back, but I wanted to clear the deck for designing something more capable, for dealing with client needs.
| * Provide named operations for stored state.Owen Jacobson2024-10-05
|/
* Turns out this flag does not do what I thought it didOwen Jacobson2024-10-05
|
* Merge branch 'wip/ui'Owen Jacobson2024-10-05
|\
| * Pre-commit needs the UI available, so make it available.Owen Jacobson2024-10-05
| |
| * Render the UI at /.Owen Jacobson2024-10-05
| |
| * Configure the SvelteKit build process to build a static site.Owen Jacobson2024-10-05
| | | | | | | | | | | | This is the [recommended] adapter for a single-page app. That's approximately how I expect to deploy the UI. [recommended]: https://kit.svelte.dev/docs/single-page-apps
| * Remove delete-message buttonsKit La Touche2024-10-05
| | | | | | | | They're badly styled and don't do anything yet anyway.
| * Merge branch 'main' into feature-frontendKit La Touche2024-10-04
| |\
| * | Add some FlowbiteKit La Touche2024-10-04
| | | | | | | | | | | | For the styling.
| * | Merge branch 'main' into feature-frontendKit La Touche2024-10-03
| |\ \
| * | | Handle basics of interface scrollingKit La Touche2024-10-03
| | | |
| * | | Absorb and display eventsKit La Touche2024-09-30
| | | | | | | | | | | | | | | | | | | | At least message-type ones, and at least without styling or memory-limit concerns.
| * | | Merge branch 'main' into feature-frontendKit La Touche2024-09-30
| |\ \ \
| * | | | Move layout concerns into layoutKit La Touche2024-09-30
| | | | |
| * | | | Merge branch 'main' into feature-frontendKit La Touche2024-09-28
| |\ \ \ \
| * | | | | Make message input tolerable as mock-upKit La Touche2024-09-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's not robust, and it's not yet able to handle multiline or rich input. We'll get there.
| * | | | | Add lots of style and layoutKit La Touche2024-09-27
| | | | | |
| * | | | | Add basic browser clientKit La Touche2024-09-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using Svelte. No tests, no linting, yet. This is just starting to get familiar with things. You'll still have to run the dev server and the dev client builder each in their own terminals. Enjoy!
* | | | | | Dependency update.Owen Jacobson2024-10-05
| | | | | |
* | | | | | Replace `unsafe` impl of backups with `rusqlite`.Owen Jacobson2024-10-05
| | | | | | | | | | | | | | | | | | | | | | | | The unsafe code still exists, but I have more faith in the rusqlite authors than in myself to ensure that the code is correct.
* | | | | | Implement `sqlite3_backup_step`'s multi-step protocol.Owen Jacobson2024-10-05
| | | | | |
* | | | | | Use the right functions for determining error messages.Owen Jacobson2024-10-05
| | | | | |
* | | | | | Improve ergonomics of `Backup`Owen Jacobson2024-10-05
| | | | | |
* | | | | | Limit unsafe{} blocks even more tightly.Owen Jacobson2024-10-05
| | | | | |
* | | | | | Remove an unchecked operation in favour of a panicOwen Jacobson2024-10-05
| | | | | |
* | | | | | Wrote down the DB recovery processOwen Jacobson2024-10-05
| | | | | |
* | | | | | Tighten up `unsafe{}` blocks in backup logic.Owen Jacobson2024-10-05
| | | | | |
* | | | | | Use sqlx's API, not SQL groveling, to find unwanted migrations.Owen Jacobson2024-10-05
| | | | | |
* | | | | | Make a backup of the `.hi` database before applying migrations.Owen Jacobson2024-10-05
| | | | | | | | | | | | | | | | | | | | | | | | This was motivated by Kit and I both independently discovering that sqlite3 will happily partially apply migrations, leaving the DB in a broken state.
* | | | | | Start fresh with database migrations.Owen Jacobson2024-10-04
| |_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | The migration path from the original project inception to now was complicated and buggy, and stranded _both_ Kit and I with broken databases due to oversights and incomplete migrations. We've agreed to start fresh, once. If this is mistakenly started with an original-schema-flavour DB, startup will be aborted.
* | | | | Clean up naming and semantics of history accessors.Owen Jacobson2024-10-04
| |_|_|/ |/| | |
* | | | Stray warningsOwen Jacobson2024-10-03
| | | |
* | | | List messages per channel.Owen Jacobson2024-10-03
| | | |
* | | | Add endpoints for deleting channels and messages.Owen Jacobson2024-10-03
| | | | | | | | | | | | | | | | It is deliberate that the expire() functions do not use them. To avoid races, the transactions must be committed before events get sent, in both cases, which makes them structurally pretty different.
* | | | Represent channels and messages using a split "History" and "Snapshot" model.Owen Jacobson2024-10-03
| | | | | | | | | | | | | | | | | | | | | | | | This separates the code that figures out what happened to an entity from the code that represents it to a user, and makes it easier to compute a snapshot at a point in time (for things like bootstrap). It also makes the internal logic a bit easier to follow, since it's easier to tell whether you're working with a point in time or with the whole recorded history. This hefty.
* | | | Package up common event fields as InstantOwen Jacobson2024-10-02
| | | |
* | | | Retire top-level `repo`.Owen Jacobson2024-10-02
| | | | | | | | | | | | | | | | This helped me discover an organizational scheme I like more.
* | | | Split login and token handling.Owen Jacobson2024-10-02
| | | |
* | | | First pass on reorganizing the backend.Owen Jacobson2024-10-02
| | | | | | | | | | | | | | | | This is primarily renames and repackagings.
* | | | Organize IDs into top-level namespaces.Owen Jacobson2024-10-01
| | | | | | | | | | | | | | | | (This is part of a larger reorganization.)
* | | | Provide a resume point to bridge clients from state snapshots to the event ↵Owen Jacobson2024-10-01
| | | | | | | | | | | | | | | | sequence.
* | | | Track event sequences globally, not per channel.Owen Jacobson2024-10-01
| | | | | | | | | | | | | | | | Per-channel event sequences were a cute idea, but it made reasoning about event resumption much, much harder (case in point: recovering the order of events in a partially-ordered collection is quadratic, since it's basically graph sort). The minor overhead of a global sequence number is likely tolerable, and this simplifies both the API and the internals.