Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
d4a23ea
Clone server URL - subdomain support #502
joepio Jan 7, 2026
fa6e9f6
Multi-domain fix #502
joepio Jan 8, 2026
0d9f16f
Fix lint & tests
joepio Feb 5, 2026
8212404
Refactor Subject Rust #1139
joepio Feb 5, 2026
b4dd7b9
dids #1139
joepio Feb 6, 2026
d1a9e3c
Fix did endpoint & yjs sync
joepio Feb 6, 2026
7b7ea2e
Fix subscribe warning
joepio Feb 6, 2026
0ffb9e9
Normalize subjects for search deduplication
joepio Feb 6, 2026
bd0f6ca
Agents as did #1139
joepio Feb 6, 2026
c1d656f
Fix server_test
joepio Feb 6, 2026
5dedc5f
More clippy fixes
joepio Feb 6, 2026
a43d42b
Fix less unneccesary js builds
joepio Feb 10, 2026
42d4841
Stateless invites & did agents #544
joepio Feb 11, 2026
105af01
Fix subject usage in search
joepio Mar 3, 2026
213d918
Did migration, move routing to query param
joepio Mar 5, 2026
03f11bd
Version protocol handshake & backwards compatibility #1150
joepio Mar 5, 2026
d52f451
Fix API drift after DID rebase
joepio Mar 5, 2026
6cb2a1a
migrate to dids, dht resolve #1146
joepio Mar 7, 2026
35aa142
dids for commits
joepio Mar 7, 2026
930f616
Fix chatroom
joepio Mar 9, 2026
b31b163
Chatroom test, less subscribes
joepio Mar 9, 2026
1fd6f7b
Replace ureq with reqwest (async HTTP calls) #584
joepio Mar 9, 2026
6bcd08f
Fix ChatRoom / commit following again
joepio Mar 9, 2026
9623d46
Fix scroll chatroom
joepio Mar 9, 2026
7e9320a
Improve offline icon - also if no ws connection
joepio Mar 9, 2026
4ae39f4
lint
joepio Mar 9, 2026
809e9a1
Add metrics #420
joepio Mar 10, 2026
9f61718
Run on android #25
joepio Mar 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"permissions": {
"allow": [
"mcp__chrome-devtools__new_page",
"mcp__chrome-devtools__take_screenshot",
"Bash(cargo test --package atomic-server --test dht_resolve --no-run)",
"Bash(cargo test --package atomic-server --test dht_resolve -- --nocapture)",
"Bash(pnpm test)",
"Bash(cargo build -p atomic-server)",
"Bash(grep -n \"async fn get_resource_extended\" /Users/joep/dev/github/atomicdata-dev/atomic-server/lib/src/*.rs)",
"Bash(grep -n \"async fn query\\\\|fn query\" /Users/joep/dev/github/atomicdata-dev/atomic-server/server/src/*.rs)",
"Bash(grep -E \"\\\\.\\(rs\\)$\")",
"Bash(grep -n \"pub async fn handle_get_resource\\\\|pub async fn post_commit\" /Users/joep/dev/github/atomicdata-dev/atomic-server/server/src/handlers/*.rs)",
"Bash(cargo tauri --version)",
"Bash(echo $ANDROID_HOME)",
"Bash(adb devices)"
]
}
}
1 change: 1 addition & 0 deletions .dagger/.gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
/sdk/** linguist-generated
tar
9 changes: 7 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,17 @@
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"eslint.workingDirectories": [{ "directory": "browser" }],
"eslint.workingDirectories": [
{
"directory": "browser"
}
],
"typescript.preferences.preferTypeOnlyAutoImports": true,
"rustTestExplorer.rootCargoManifestFilePath": "./Cargo.toml",
// This won't work in multi-root workspaces, could be fixed by using a rust-analyzer.toml once there is some more documentation on that.
// For now you need to set this in your own vscode settings file.
"rust-analyzer.cargo.extraEnv": {
"ATOMICSERVER_SKIP_JS_BUILD": "true"
}
},
"java.configuration.updateBuildConfiguration": "automatic"
}
4 changes: 2 additions & 2 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@
"group": "test"
},
{
"label": "run jaeger for tracing (using docker)",
"label": "run SigNoz for tracing locally (using docker)",
"type": "shell",
"command": "docker run -d -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778 -p 16686:16686 -p 14268:14268 -p 9411:9411 jaegertracing/all-in-one",
"command": "git clone https://github.com/SigNoz/signoz.git /tmp/signoz 2>/dev/null || true && cd /tmp/signoz/deploy && docker compose up",
"group": "none",
"problemMatcher": []
},
Expand Down
29 changes: 17 additions & 12 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,24 @@ See [STATUS.md](server/STATUS.md) to learn more about which features will remain

## UNRELEASED

- [#1139](https://github.com/ontola/atomic-server/issues/1139) AtomicServer can now create data without being dependent on a server! AtomicServer is now Local-First, using the new `did:ad` schema.
- #584 Replace ureq with reqwest (async HTTP calls)
- #420 Fix OTLP / OpenTelemetry, update docs from Jaeger to SigNoz, add metrics
- [#590](https://github.com/ontola/atomic-server/issues/590) Get rid of the `SERVER_URL` env var, which makes moving & setup easier. All resources are now relative to the hosted domain, and AtomicServer can be available from multiple domains at once.
- [#544](https://github.com/ontola/atomicdata-dev/atomic-server/issues/544) Stateless invites, using JWTs. Server setup now requires you to check the logs for the invite token.
- We changed the binary format in which resources are stored. This means your data will be migrated the first time you run the server. This could take some time depending on the size of your database.
- [#1048](https://github.com/atomicdata-dev/atomic-server/issues/1048) Fix search index not removing old versions of resources.
- [#1056](https://github.com/atomicdata-dev/atomic-server/issues/1056) Switched from Earthly to Dagger for CI. Also made improvements to E2E test publishing and building docker images.
- [#979](https://github.com/atomicdata-dev/atomic-server/issues/979) Fix nested resource deletion, use transactions
- [#1057](https://github.com/atomicdata-dev/atomic-server/issues/1057) Fix double slashes in search bar
- [#986](https://github.com/atomicdata-dev/atomic-server/issues/986) CLI should use Agent in requests - get
- [#1047](https://github.com/atomicdata-dev/atomic-server/issues/1047) Search endpoint throws error for websocket requests
- [#958](https://github.com/atomicdata-dev/atomic-server/issues/958) Fix search in CLI / atomic_lib
- [#658](https://github.com/atomicdata-dev/atomic-server/issues/658) Added JSON datatype.
- [#1024](https://github.com/atomicdata-dev/atomic-server/issues/1024) Added URI datatype.
- [#998](https://github.com/atomicdata-dev/atomic-server/issues/998) Added YJS datatype.
- [#851](https://github.com/atomicdata-dev/atomic-server/issues/851) Deleting file resources now also deletes the file from the filesystem.
BREAKING: [#1107](https://github.com/atomicdata-dev/atomic-server/issues/1107) Named nested resources are no longer supported. Value::Resource and SubResource::Resource have been removed. If you need to include multiple resources in a response use an array.
- [#1048](https://github.com/ontola/atomic-server/issues/1048) Fix search index not removing old versions of resources.
- [#1056](https://github.com/ontola/atomic-server/issues/1056) Switched from Earthly to Dagger for CI. Also made improvements to E2E test publishing and building docker images.
- [#979](https://github.com/ontola/atomic-server/issues/979) Fix nested resource deletion, use transactions
- [#1057](https://github.com/ontola/atomic-server/issues/1057) Fix double slashes in search bar
- [#986](https://github.com/ontola/atomic-server/issues/986) CLI should use Agent in requests - get
- [#1047](https://github.com/ontola/atomic-server/issues/1047) Search endpoint throws error for websocket requests
- [#958](https://github.com/ontola/atomic-server/issues/958) Fix search in CLI / atomic_lib
- [#658](https://github.com/ontola/atomic-server/issues/658) Added JSON datatype.
- [#1024](https://github.com/ontola/atomic-server/issues/1024) Added URI datatype.
- [#998](https://github.com/ontola/atomic-server/issues/998) Added YJS datatype.
- [#851](https://github.com/ontola/atomic-server/issues/851) Deleting file resources now also deletes the file from the filesystem.
BREAKING: [#1107](https://github.com/ontola/atomic-server/issues/1107) Named nested resources are no longer supported. Value::Resource and SubResource::Resource have been removed. If you need to include multiple resources in a response use an array.
BREAKING: `store.get_resource_extended()` now returns a `ResourceResponse` instead of a `Resource` due to the removal of named nested resources. Use `.into()` or `.to_single()` to convert to a `Resource`.

## [v0.40.2]
Expand Down
34 changes: 19 additions & 15 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Check out the [Roadmap](https://docs.atomicdata.dev/roadmap.html) if you want to
- [Testing](#testing)
- [Performance monitoring / benchmarks](#performance-monitoring--benchmarks)
- [Tracing](#tracing)
- [Tracing with OpenTelemetry (and Jaeger)](#tracing-with-opentelemetry-and-jaeger)
- [Tracing with OpenTelemetry (and SigNoz)](#tracing-with-opentelemetry-and-signoz)
- [Tracing with Chrome](#tracing-with-chrome)
- [Criterion benchmarks](#criterion-benchmarks)
- [Drill](#drill)
Expand Down Expand Up @@ -158,26 +158,30 @@ For doing this, we have at least three tools: tracing, criterion and drill.

There are two ways you can use `tracing` to get insights into performance.

#### Tracing with OpenTelemetry (and Jaeger)
#### Tracing with OpenTelemetry (and SigNoz)

- Run the server with `--trace opentelemetry` and add `--log-level trace` to inspect more events
- Run an OpenTelemetry compatible service, such as Jaeger. See `docker run` command below or use the vscode task.
- Visit jaeger: `http://localhost:16686`
- Sign up for [SigNoz Cloud](https://signoz.io/) (free trial available) or run SigNoz locally with Docker
- Add the following to your `.env`:

```sh
docker run -d --platform linux/amd64 --name jaeger \
-e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
-p 5775:5775/udp \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 4317:4317 \
-p 16686:16686 \
-p 14268:14268 \
-p 9411:9411 \
jaegertracing/all-in-one:latest
ATOMIC_TRACING=opentelemetry
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=https://ingest.<region>.signoz.cloud:443
OTEL_EXPORTER_OTLP_HEADERS=signoz-ingestion-key=<your-key>
```

- Visit SigNoz to inspect traces and logs: `https://app.signoz.io/`

For local development without a cloud account, you can run SigNoz locally:

```sh
git clone https://github.com/SigNoz/signoz.git
cd signoz/deploy && docker compose up
```

Then set `OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317` (no TLS needed locally).

#### Tracing with Chrome

- Use the `tracing::instrument` macro to make functions traceable. Check out the [tracing](https://docs.rs/tracing/latest/tracing/) docs for more info.
Expand Down
Loading
Loading