Eric Eastwood
d508521171
Use stable test selectors from Hydrogen (`data-testid`)
...
Follow-up to https://github.com/matrix-org/matrix-public-archive/pull/29#discussion_r909492946
---
Updated Hydrogen to add the consistent `data-testid` attribute selectors,
https://github.com/vector-im/hydrogen-web/pull/773
```
npm install hydrogen-view-sdk@npm:@mlm/hydrogen-view-sdk@0.0.13-scratch
```
2022-07-05 06:23:47 -05:00
Eric Eastwood
cfbd6182a9
Explain why parallel
2022-06-29 13:57:06 +02:00
Eric Eastwood
4690349816
Remove unneeded `include_redundant_members` from `/messages` `filter` and test that member state is still visible ( #29 )
...
Follow-up to https://github.com/matrix-org/matrix-public-archive/pull/28#discussion_r909428366
2022-06-29 06:56:13 -05:00
Eric Eastwood
57174db6e0
Fix archive not responding in big rooms because homeserver times out on `/context` request
...
Add `filter={"lazy_load_members":true}` so that `/context` responds without timing out by returning just the state for the sender of the included event. Otherwise, the homeserver returns all state in the room at that point in time which in big rooms, can be 100k member events that we don't care about anyway. Synapse seems to timeout at about the ~5k state event mark.
## Dev notes
Without `filter={"lazy_load_members":true}`, Synapse can only handle ~4k member events (probably state in general) before `/context` times out before it ever responds in the 180 second window. I'm only looking at the member count as a rough proxy but the number of member events + state will be more.
Loads | Member count | Alias | Matrix.to | API request
--- | --- | --- | --- | ---
❌ | 39k | `#matrix:matrix.org` | [🔗 ](https://matrix.to/#/!OGEhHVWSdvArJzumhm:matrix.org/$xo-tESRNP1Vg1RxLXIfmMeO6dA6-u9XuE2lv6toeKcw?via=matrix.org ) | `https://matrix-client.matrix.org/_matrix/client/r0/rooms/!OGEhHVWSdvArJzumhm:matrix.org/context/$xo-tESRNP1Vg1RxLXIfmMeO6dA6-u9XuE2lv6toeKcw?limit=0 `
❌ | 31k | `#openwisp_general:gitter.im` | [🔗 ](https://matrix.to/#/!RBzfoBeqYcCwLAAenz:gitter.im/$YFjmbmH0NRPmfVsPyxhM0jcK4RFR_CdCigtHSgCTLSc?via=matrix.org ) |`https://matrix-client.matrix.org/_matrix/client/r0/rooms/!RBzfoBeqYcCwLAAenz:gitter.im/context/$YFjmbmH0NRPmfVsPyxhM0jcK4RFR_CdCigtHSgCTLSc?limit=0 `
❌ | 16k | `#raspberrypi:matrix.org` | [🔗 ](https://matrix.to/#/!wOlkWNmgkAZFxbTaqj:matrix.org/$WMh_QauoyW6cjFDuUeNgsnUSgDn7C2XlrUnlijhdmdk?via=matrix.org ) | `https://matrix-client.matrix.org/_matrix/client/r0/rooms/!wOlkWNmgkAZFxbTaqj:matrix.org/context/$WMh_QauoyW6cjFDuUeNgsnUSgDn7C2XlrUnlijhdmdk?limit=0 `
Loads with warm cache | 7.2k | `#element-android:matrix.org` | [🔗 ](https://matrix.to/#/!AZozoWghOYSIAfaZjJ:matrix.org/$Qmb8vmaD91PIM6ROfh-2jApPoJgH2Q7NnjiwRdiEPZE?via=matrix.org ) | `https://matrix-client.matrix.org/_matrix/client/r0/rooms/!AZozoWghOYSIAfaZjJ:matrix.org/context/$Qmb8vmaD91PIM6ROfh-2jApPoJgH2Q7NnjiwRdiEPZE?limit=0 `
✅ | 4k | `#nim-science:envs.net` | [🔗 ](https://matrix.to/#/!IpFtPSbgfrZrVcVyti:envs.net/$bDRop4yvjFOl3HMouAyx4mtau-JaAxvBUJ-MqftAm7E?via=matrix.org ) | `https://matrix-client.matrix.org/_matrix/client/r0/rooms/!IpFtPSbgfrZrVcVyti:envs.net/context/$bDRop4yvjFOl3HMouAyx4mtau-JaAxvBUJ-MqftAm7E?limit=0 `
✅ | 2.3k | `#nim-webdev:matrix.org` | [🔗 ](https://matrix.to/#/!EoyccMaVGwdqyfKMAL:matrix.org/$VdRyNb1F-gLdDP9nDYK7xAh_LcE822fEfDYWz5re8dE?via=matrix.org ) | `https://matrix-client.matrix.org/_matrix/client/r0/rooms/!EoyccMaVGwdqyfKMAL:matrix.org/context/$VdRyNb1F-gLdDP9nDYK7xAh_LcE822fEfDYWz5re8dE?limit=0 `
2022-06-29 05:37:40 -05:00
Eric Eastwood
724c562d6f
Fix image not running in K8s (ROSA) ( #24 )
...
Fix image not running in K8s (ROSA)
Trying to solve the container exiting with error code `243`. `npm` throws `243` for any command you try to run with it.
Here is how to get into the container while the entrypoint normally errors.
```
$ oc run -i --tty --image=ghcr.io/matrix-org/matrix-public-archive/matrix-public-archive:sha-65edaea1a9713bb2cc93fa98638327fdeff765cd mpa-test2 --port=3050 --restart=Never --env="DOMAIN=cluster" --command /bin/bash
$ npm start
$ echo $?
243
```
Why does the same image work in Docker?
```
$ docker run -it --entrypoint /bin/bash ghcr.io/matrix-org/matrix-public-archive/matrix-public-archive:sha-65edaea1a9713bb2cc93fa98638327fdeff765cd
$ npm start
# it starts ✅
```
## Root cause
Seems like it could be either of these issues. Both are `8.6.0`+ problems as well which lines up with the `npm` version available in each base image.
- https://github.com/npm/cli/issues/4769
- https://github.com/npm/cli/issues/4996
- Specific comment about breaking stuff in k8s for other people, https://github.com/npm/cli/issues/4996#issuecomment-1150290804
2022-06-15 18:42:15 -05:00
Eric Eastwood
bd5c14242e
Make sure container is able to start up ( #23 )
...
Follow-up to https://github.com/matrix-org/matrix-public-archive/pull/22
2022-06-15 17:12:44 -05:00
Eric Eastwood
780600e3dd
Containerize app (make a Docker image for `matrix-public-archive`) ( #22 )
...
Containerize app (make a Docker image for `matrix-public-archive`)
```
ghcr.io/matrix-org/matrix-public-archive/matrix-public-archive
```
... with a variety of tags!
Packages viewable on https://github.com/matrix-org/matrix-public-archive/pkgs/container/matrix-public-archive%2Fmatrix-public-archive
2022-06-15 02:28:18 -05:00
Eric Eastwood
3e85ae3b60
Easy get the app running steps ( #21 )
...
Easy get the app running steps:
1. Install
2. Edit the config to point at your homeserver
3. Run the app!
---
This is made possible thanks to the change we made in https://github.com/matrix-org/matrix-public-archive/pull/20#discussion_r897567619 to start using a scoped custom version of `hydrogen-view-sdk`. This includes all of the scratch changes necessary to get this project running which makes the `npm install` just work out of the box without all of the `npm link` hassle.
2022-06-15 01:21:10 -05:00
Eric Eastwood
cda2d98df0
Add testing to CI ( #20 )
...
1. Build test homeserver Docker images which can federate with each other
2. Run end-to-end (e2e) tests
#### Dev notes
Sharing variables across jobs when the `services` field can't access the `env` context, https://github.community/t/how-to-use-env-with-container-image/17252/24
```yaml
env:
FOO: bar
jobs:
set_env:
outputs:
var: ${{ steps.save_var.outputs.var }}
steps:
- id: save_var
run: echo "::set-output name=var::${{ env.FOO }}"
actual_job:
needs: set_env
container:
image: ...whatever_you_need_here...${{ needs.set_env.outputs.var }}
```
2022-06-15 00:59:41 -05:00
Eric Eastwood
cead1796b8
Better explain how to get the project and tests to run at this point ( #19 )
2022-06-10 18:52:12 -05:00
Eric Eastwood
1bd5ecff32
Remove extra body margin causing offset from viewport ( #18 )
2022-06-10 15:57:22 -05:00
Eric Eastwood
952a3acd4a
Explain how config inherits ( #17 )
2022-06-09 21:37:07 -05:00
Eric Eastwood
9fc71a3412
Remove `matrix-bot-sdk` usage in tests ( #15 )
...
Remove `matrix-bot-sdk` usage in tests because it didn't have timestamp massaging `?ts` and it's not really necessary to rely on since we can just call the API directly 🤷 . `matrix-bot-sdk` is also very annoying having to build rust crypto packages.
We're now using direct `fetch` requests against the Matrix API and lightweight `client` object.
All 3 current tests pass ✅
2022-06-09 20:44:57 -05:00
Eric Eastwood
7dfe8cabc9
Add lightbox support and Hydrogen URL hashes relative to the room ( #12 )
...
Add image lightbox support and Hydrogen URL hashes relative to the room
Related to https://github.com/vector-im/hydrogen-web/issues/677
Requires the changes from https://github.com/vector-im/hydrogen-web/pull/749 (split out from https://github.com/vector-im/hydrogen-web/pull/653 )
![](https://user-images.githubusercontent.com/558581/172526457-38c108e8-8c46-4e0c-9979-734348ec67fc.gif )
### Hydrogen routing relative to the room (remove session and room from the URL hash)
Before:
Page URL: doesn't work
```html
<div class="Timeline_messageBody">
<div class="media" style="max-width: 400px">
<div class="spacer" style="padding-top: 48.75%;"></div>
<a href="undefined">
<img src="http://192.168.1.182:8008//_matrix/media/r0/thumbnail/my.synapse.server/RxfuMxEgYcXHKYWERkKVUkqO?width=400&height=195&method=scale " alt="Friction_between_surfaces.jpeg" title="Friction_between_surfaces.jpeg" style="max-width: 400px; max-height: 195px;">
</a>
<time>2/24 6:20 PM</time>
</div>
<!--node binding placeholder-->
</div>
```
Before (not relative):
Page URL: `http://localhost:3050/!HBehERstyQBxyJDLfR:my.synapse.server/date/2022/02/24#/session/123/room/!HBehERstyQBxyJDLfR:my.synapse.server/lightbox/$17cgP6YBP9ny9xuU1vBmpOYFhRG4zpOe9SOgWi2Wxsk `
```html
<div class="Timeline_messageBody">
<div class="media" style="max-width: 400px">
<div class="spacer" style="padding-top: 48.75%;"></div>
<a href="#/session/123/room/!HBehERstyQBxyJDLfR:my.synapse.server/lightbox/$17cgP6YBP9ny9xuU1vBmpOYFhRG4zpOe9SOgWi2Wxsk">
<img src="http://192.168.1.182:8008//_matrix/media/r0/thumbnail/my.synapse.server/RxfuMxEgYcXHKYWERkKVUkqO?width=400&height=195&method=scale " alt="Friction_between_surfaces.jpeg" title="Friction_between_surfaces.jpeg" style="max-width: 400px; max-height: 195px;">
</a>
<time>2/24 6:20 PM</time>
</div>
<!--node binding placeholder-->
</div>
```
After (nice relative links):
Page URL: `http://localhost:3050/!HBehERstyQBxyJDLfR:my.synapse.server/date/2022/02/24#/lightbox/$17cgP6YBP9ny9xuU1vBmpOYFhRG4zpOe9SOgWi2Wxsk `
```html
<div class="Timeline_messageBody">
<div class="media" style="max-width: 400px">
<div class="spacer" style="padding-top: 48.75%;"></div>
<a href="#/lightbox/$17cgP6YBP9ny9xuU1vBmpOYFhRG4zpOe9SOgWi2Wxsk">
<img src="http://192.168.1.182:8008//_matrix/media/r0/thumbnail/my.synapse.server/RxfuMxEgYcXHKYWERkKVUkqO?width=400&height=195&method=scale " alt="Friction_between_surfaces.jpeg" title="Friction_between_surfaces.jpeg" style="max-width: 400px; max-height: 195px;">
</a>
<time>2/24 6:20 PM</time>
</div>
<!--node binding placeholder-->
</div>
```
2022-06-08 14:03:36 -05:00
Eric Eastwood
940c73868f
Organize file and add more nodemon logging ( #14 )
...
Spawned from https://github.com/vitejs/vite/issues/8492
2022-06-07 20:27:22 -05:00
Eric Eastwood
cc958326ea
Use new Hydrogen light-theme asset directly instead of legacy style.css ( #13 )
2022-06-07 20:21:56 -05:00
Eric Eastwood
dff2209e56
Fix nodemon not being able to watch for changes because vite is interfering ( #11 )
...
We use `vite@2.9.6` because `vite>=2.9.7` is interfering with `nodemon`, see https://github.com/vitejs/vite/issues/8492
This means that when using `npm run start-dev` -> [`start-dev.js`](40f9d2ea5a/server/start-dev.js
), `nodemon` wasn't restarting when a change was made.
2022-06-07 14:56:46 -05:00
Eric Eastwood
40f9d2ea5a
Update to work with latest `hydrogen-view-sdk@0.0.12` ( #10 )
...
Get this project running again after a few months of changes
from `hydrogen-view-sdk` and now finally after
https://github.com/vector-im/hydrogen-web/pull/693
merged to make the SDK friendly to locally link and develop on.
2022-06-06 18:58:45 -05:00
Eric Eastwood
c34ed9ea0e
Fix last event in day not being shown
2022-02-24 13:06:19 -06:00
Eric Eastwood
2153fa4852
Use file that will resolve in new `./assets/*` export
...
Because we had to update the `assets` `export` to avoid the following deprecation warning:
```
(node:133896) [DEP0148] DeprecationWarning: Use of deprecated folder mapping "./assets/" in the "exports" field module resolution of the package at C:\Users\MLM\Documents\GitHub\element\matrix-public-archive\node_modules\hydrogen-view-sdk\package.json.
Update this package.json to use a subpath pattern like "./assets/*".
(Use `node --trace-deprecation ...` to show where the warning was created)
```
`hydrogen-view-sdk` `package.json` before:
```json
{
"exports": {
".": {
"import": "./lib-build/hydrogen.es.js",
"require": "./lib-build/hydrogen.cjs.js"
},
"./paths/vite": "./paths/vite.js",
"./style.css": "./style.css",
"./assets/": "./asset-build/assets/"
}
}
```
`hydrogen-view-sdk` `package.json` after:
```json
{
"exports": {
".": {
"import": "./lib-build/hydrogen.es.js",
"require": "./lib-build/hydrogen.cjs.js"
},
"./paths/vite": "./paths/vite.js",
"./style.css": "./style.css",
"./assets/*": "./asset-build/assets/*"
}
}
```
2022-02-24 13:02:55 -06:00
Eric Eastwood
db6d3797d7
Working e2e test
2022-02-24 03:27:53 -06:00
Eric Eastwood
839e31a35e
E2E test but still failing because fetching from start of day before test events happened
2022-02-23 21:25:05 -06:00
Eric Eastwood
40fa71df03
Clean up federation test
2022-02-22 20:55:42 -06:00
Eric Eastwood
0f493a241e
Federated homeservers in Docker for e2e tests
2022-02-22 20:25:24 -06:00
Eric Eastwood
aea382e4f8
WIP: start of tests
2022-02-22 16:06:29 -06:00
Eric Eastwood
7d95681611
Make sure input value is zero padded to parse properly
2022-02-18 12:34:21 -06:00
Eric Eastwood
652b96950b
Some grid offset simplications thanks to setting correct 1-based date
2022-02-17 21:50:31 -06:00
Eric Eastwood
4f506f0b7e
Fix grid-offset when month starts on Sunday like February 2015
2022-02-17 21:29:27 -06:00
Eric Eastwood
b41ee62e59
Add year select fallback for Firefox
2022-02-17 21:10:36 -06:00
Eric Eastwood
6d5ad656b6
Add month/year selector and use UTC date functions
2022-02-17 20:45:47 -06:00
Eric Eastwood
fe3f515862
Calendar styles and server hydrogen assets
2022-02-17 16:56:54 -06:00
Eric Eastwood
b401cbbc3a
Add active date to calendar
2022-02-16 23:08:18 -06:00
Eric Eastwood
6a5d011a45
Link calendar days
2022-02-16 19:58:32 -06:00
Eric Eastwood
8482c1b667
Clarify that Node.js v16 will also work
2022-02-16 17:11:09 -06:00
Eric Eastwood
8160b6d928
Fix reply permalinks having undefined room ID's
2022-02-16 14:56:20 -06:00
Eric Eastwood
d9af4b6b7c
Reload when locally linked hydrogen-web changes
2022-02-16 14:55:52 -06:00
Eric Eastwood
56f7d17126
Ensure deps available
2022-02-16 14:13:39 -06:00
Eric Eastwood
5386c5aac7
Point to the right file path
2022-02-16 14:13:30 -06:00
Eric Eastwood
166857e0de
Fix lints
2022-02-15 21:33:31 -06:00
Eric Eastwood
6c1cf6d46a
Stop restarting server when the client bundle updates
2022-02-15 17:30:30 -06:00
Eric Eastwood
e0279e080e
Add npm run start-dev to build vite and run server at once
2022-02-15 17:17:14 -06:00
Eric Eastwood
ae4b529879
Working calendar month navigation
2022-02-15 02:30:26 -06:00
Eric Eastwood
72a6297ae5
Re-mount on client to get JS interactivity
2022-02-15 01:33:16 -06:00
Eric Eastwood
0aab8383c5
Pass data by window which is also serialized on the client
2022-02-14 23:20:25 -06:00
Eric Eastwood
a75b12a608
WIP: Add calendar to right panel
2022-02-14 21:11:55 -06:00
Eric Eastwood
82ba92b806
Add custom RightPanel support
2022-02-10 02:21:49 -06:00
Eric Eastwood
c0a2a65c2f
Add support for the room header (RoomView)
2022-02-10 01:42:02 -06:00
Eric Eastwood
2378ed72c7
Add in date routes
2022-02-09 20:29:18 -06:00
Eric Eastwood
a268086cfd
Add readme first draft
2022-02-09 02:39:24 -06:00
Eric Eastwood
f80f9fbbb6
Make displayname and avatars show up and handle avatar changes
2022-02-09 02:07:16 -06:00