77 Commits

Author SHA1 Message Date
63044a697d feat: change node ownership to namespace instead of creator
Some checks failed
Build and Publish APK Package / build-apk (amd64, x86_64) (push) Successful in 44s
Build and Publish APK Package / build-apk (arm64, aarch64) (push) Successful in 51s
Build and Publish Arch Package / build-arch (amd64, x86_64) (push) Successful in 58s
Build and Publish Arch Package / build-arch (arm64, aarch64) (push) Successful in 1m5s
Build and Push Docker Container / build-and-push (push) Failing after 10m5s
When a node is created in a namespace, the namespace now owns it rather than the creator. This allows namespaces to manage content ownership. Namespace nodes themselves remain owned by their creator. Users retain transitive ownership through their default namespace: user→has_ownership→namespace→has_ownership→node.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
v0.1.2
2026-04-02 05:41:13 +02:00
ea8a9ca0c3 feat: add global user namespace for shared access
Create a special _global namespace that every new user automatically
gets can_create_rel access to (inclusive of can_read). This provides
a shared space where all users can see and interact with published nodes.

- ensureGlobalNamespace creates _global on first use with self-ownership
- ensureUser grants can_create_rel to each new user on the global namespace
- User visibility still relies on existing post-BFS global readability

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-02 05:31:04 +02:00
bcd52e0ae6 update project page url for package
Some checks failed
Build and Publish APK Package / build-apk (amd64, x86_64) (push) Successful in 42s
Build and Publish APK Package / build-apk (arm64, aarch64) (push) Successful in 43s
Build and Publish Arch Package / build-arch (amd64, x86_64) (push) Successful in 59s
Build and Publish Arch Package / build-arch (arm64, aarch64) (push) Successful in 59s
Build and Push Docker Container / build-and-push (push) Failing after 10m8s
v0.1.1
2026-04-02 05:09:02 +02:00
4912f37688 remove claude markdown 2026-04-02 05:08:44 +02:00
f2521be158 feat: add due date filters for list command
- --due: show only nodes with a due date set
- --due-within N: show only nodes due within N days (includes overdue)

Implemented in service layer with post-fetch filtering, threaded through
API client and server, and exposed via CLI flags.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-02 05:06:35 +02:00
8357c80e75 feat: add due date to list sorting priority
Sort nodes by: status → priority → due date (soonest first).
Nodes without due dates sort last.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-02 04:57:51 +02:00
a30c703efa feat: add colored due date indicators to list and show views
- List view: show relative due date (+12d, -3d, today) after namespace
- Show view: colorize full due date based on urgency
- Color scheme: red (overdue), yellow (due within 3 days), green (4+ days)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-02 04:54:15 +02:00
30f802b5ac feat: enable multiplatform Docker image builds for amd64 and arm64
Some checks failed
Build and Publish APK Package / build-apk (arm64, aarch64) (push) Has been cancelled
Build and Publish APK Package / build-apk (amd64, x86_64) (push) Has been cancelled
Build and Publish Arch Package / build-arch (amd64, x86_64) (push) Has been cancelled
Build and Publish Arch Package / build-arch (arm64, aarch64) (push) Has been cancelled
Build and Push Docker Container / build-and-push (push) Failing after 10m21s
Add QEMU setup and platforms configuration to build Docker images
for both linux/amd64 and linux/arm64 architectures.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
v0.1.0
2026-04-02 04:38:12 +02:00
1ad9fb8785 fix: disable dependency tracing in Alpine package build
Some checks failed
Build and Publish APK Package / build-apk (amd64, x86_64) (push) Successful in 43s
Build and Publish APK Package / build-apk (arm64, aarch64) (push) Failing after 51s
Build and Publish Arch Package / build-arch (amd64, x86_64) (push) Failing after 55s
Build and Push Docker Container / build-and-push (push) Has been cancelled
Build and Publish Arch Package / build-arch (arm64, aarch64) (push) Has been cancelled
Go binaries are statically linked and don't need dependency scanning.
Also works around newer apk CLI breaking --who-owns flag.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-02 04:35:06 +02:00
8ab2e4348d fix: disable strip and check in Alpine package build
Some checks failed
Build and Publish APK Package / build-apk (amd64, x86_64) (push) Failing after 49s
Build and Publish APK Package / build-apk (arm64, aarch64) (push) Failing after 41s
Build and Publish Arch Package / build-arch (amd64, x86_64) (push) Failing after 1m5s
Build and Push Docker Container / build-and-push (push) Has been cancelled
Build and Publish Arch Package / build-arch (arm64, aarch64) (push) Has been cancelled
Go binaries are already stripped via ldflags, and disable the check
warning since there's no test suite.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-02 04:32:04 +02:00
d55d423fea fix: fix CI workflow failures for Arch and Alpine package builds
Some checks failed
Build and Publish Arch Package / build-arch (amd64, x86_64) (push) Successful in 1m14s
Build and Publish Arch Package / build-arch (arm64, aarch64) (push) Successful in 1m7s
Build and Push Docker Container / build-and-push (push) Successful in 1m47s
Build and Publish APK Package / build-apk (amd64, x86_64) (push) Failing after 51s
Build and Publish APK Package / build-apk (arm64, aarch64) (push) Successful in 49s
Move checkout before setup-go in Arch workflow so src/go.mod exists,
and remove unsupported --platform container option from Alpine workflow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-02 04:21:33 +02:00
f1f8cb5757 fix: build Arch packages without archlinux container
Some checks failed
Build and Publish APK Package / build-apk (amd64, x86_64) (push) Failing after 0s
Build and Publish APK Package / build-apk (arm64, aarch64) (push) Failing after 0s
Build and Publish Arch Package / build-arch (amd64, x86_64) (push) Failing after 39s
Build and Publish Arch Package / build-arch (arm64, aarch64) (push) Failing after 24s
Build and Push Docker Container / build-and-push (push) Successful in 1m49s
The Gitea runner is ARM64 and archlinux:latest has no ARM64 image.
Drop the container entirely and build .pkg.tar.zst manually:
cross-compile with Go and assemble the package archive directly,
so no makepkg or Arch Linux toolchain is needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 04:15:52 +02:00
a1104f199f feat: build APK packages for x86_64 and aarch64
Uses a matrix strategy with Go cross-compilation (GOARCH + CARCH)
so both architectures build in the same amd64 container.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 04:13:53 +02:00
fa265a1ad1 feat: build Arch packages for x86_64 and aarch64
Some checks failed
Build and Publish APK Package / build-apk (push) Failing after 42s
Build and Publish Arch Package / build-arch (amd64, x86_64) (push) Failing after 1s
Build and Publish Arch Package / build-arch (arm64, aarch64) (push) Failing after 1s
Build and Push Docker Container / build-and-push (push) Successful in 1m49s
Uses a matrix strategy with Go cross-compilation (GOARCH + CARCH)
so both architectures build in the same amd64 container.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 04:07:11 +02:00
76158b46f8 fix: force linux/amd64 platform for Arch container
archlinux:latest has no ARM64 image on Docker Hub.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 04:05:59 +02:00
bc798f7bf2 feat: add Arch Linux package and CI workflow
Some checks failed
Build and Publish APK Package / build-apk (push) Failing after 42s
Build and Publish Arch Package / build-arch (push) Failing after 1s
Build and Push Docker Container / build-and-push (push) Successful in 1m48s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 04:00:51 +02:00
63c33937ee correct mail in alpine package 2026-04-02 03:46:02 +02:00
f67526e64a rename docker image in pipeline 2026-04-02 03:44:15 +02:00
9d29f4ad2b fix: use correct curl flags for Gitea Alpine registry upload
All checks were successful
Build and Publish APK Package / build-apk (push) Successful in 47s
Build and Push Docker Container / build-and-push (push) Successful in 1m49s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 03:26:39 +02:00
81c63ad05f fix: run apk update and pre-install build-base before abuild
Some checks failed
Build and Publish APK Package / build-apk (push) Failing after 46s
Build and Push Docker Container / build-and-push (push) Successful in 1m47s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 03:20:03 +02:00
1438e7b4b9 fix: install nodejs before checkout (required by actions/checkout)
Some checks failed
Build and Publish APK Package / build-apk (push) Failing after 13s
Build and Push Docker Container / build-and-push (push) Has been cancelled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 03:18:00 +02:00
c94e57d9ba fix: clean up apk-publish workflow
Some checks failed
Build and Publish APK Package / build-apk (push) Failing after 2s
Build and Push Docker Container / build-and-push (push) Has been cancelled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 03:16:29 +02:00
53883c04f1 fix: correct Gitea Alpine package registry upload URL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 03:15:08 +02:00
c12452fff1 fix: use abuild-keygen key for signing instead of mismatched openssl key
All checks were successful
Build and Publish APK Package / build-apk (push) Successful in 45s
Build and Push Docker Container / build-and-push (push) Successful in 1m48s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 03:09:59 +02:00
4374befa42 refactor: remove AX_DB_PATH env var support from store layer
Some checks failed
Build and Push Docker Container / build-and-push (push) Has been cancelled
Build and Publish APK Package / build-apk (push) Has been cancelled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 03:07:42 +02:00
595bb78599 Fix APKBUILD: use direct srcdir path in build function
Some checks failed
Build and Publish APK Package / build-apk (push) Failing after 49s
Build and Push Docker Container / build-and-push (push) Successful in 1m49s
2026-04-02 03:03:06 +02:00
e6a2e01d9d Fix apk-publish: add build-base dep, net option, and apk update
Some checks failed
Build and Publish APK Package / build-apk (push) Failing after 15s
Build and Push Docker Container / build-and-push (push) Successful in 1m48s
2026-04-02 02:58:34 +02:00
1e6c58a0cb Fix apk-publish workflow: place source tarball in APKBUILD directory
Some checks failed
Build and Publish APK Package / build-apk (push) Failing after 15s
Build and Push Docker Container / build-and-push (push) Has been cancelled
2026-04-02 02:56:54 +02:00
f11d1d0cac Fix apk-publish workflow: add git safe.directory config
Some checks failed
Build and Publish APK Package / build-apk (push) Failing after 17s
Build and Push Docker Container / build-and-push (push) Successful in 1m47s
2026-04-02 02:54:07 +02:00
c17952e6ac Fix apk-publish workflow: create source tarball from local git checkout
Some checks failed
Build and Publish APK Package / build-apk (push) Failing after 14s
Build and Push Docker Container / build-and-push (push) Has been cancelled
2026-04-02 02:52:31 +02:00
aa5f124b5f Fix apk-publish workflow: run abuild as non-root user
Some checks failed
Build and Publish APK Package / build-apk (push) Failing after 17s
Build and Push Docker Container / build-and-push (push) Has been cancelled
2026-04-02 02:50:33 +02:00
58b8fef731 Fix apk-publish workflow: add nodejs dependency and use dynamic home path
Some checks failed
Build and Publish APK Package / build-apk (push) Failing after 14s
Build and Push Docker Container / build-and-push (push) Successful in 1m47s
2026-04-02 02:46:43 +02:00
cac3221bbf Add Alpine APK packaging and update CI for versioned releases
Some checks failed
Build and Publish APK Package / build-apk (push) Failing after 18s
Build and Push Docker Container / build-and-push (push) Successful in 1m48s
2026-04-02 02:41:47 +02:00
64d4a9fe90 rename ax server docker file
All checks were successful
Build and Push Docker Container / build-and-push (push) Successful in 1m47s
2026-04-02 02:36:54 +02:00
4461c4fcff add docker build pipeline
All checks were successful
Build and Push Docker Container / build-and-push (push) Successful in 4m38s
2026-04-02 02:28:19 +02:00
252503a572 refactor: move e2e tests into src/e2e directory 2026-04-02 02:23:00 +02:00
6821112c8f refactor: remove AX_DB_PATH env var, fix Dockerfile for src/ layout 2026-04-02 02:19:48 +02:00
921f4913f8 fix: correct GetProperty bug, init to use .ax/, add default aliases, split e2e tests, add due date tests
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 01:58:48 +02:00
5969a2591c feat: reduce default node ID length to 3 and auto-grow when exhausted
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 01:21:00 +02:00
2a48ea046b fix: invert FindAndOpenSQLiteStore existence check
The condition was backwards — it exited with "database already exists"
when the file was found, and tried to open it when it did not exist.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 01:09:38 +02:00
51341eeb84 refactor: remove service factory wrappers, call store init methods directly
Replace InitNodeService/GetNodeService/GetNodeServiceForUser with thin
NewLocalNodeService/NewRemoteNodeService constructors; move wiring logic
into cmd/root.go (getNodeService helper) and an inline closure in serve.go.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 00:56:45 +02:00
03a896d23f refactor: consolidate packages - move output to cmd, config/session to store, rename Store to GraphStore 2026-04-02 00:42:55 +02:00
2bcc310c6d move funcs from cmd/rel.go to cmd/root.go 2026-04-01 22:39:44 +02:00
706baf81aa add gitignore 2026-04-01 22:30:01 +02:00
e42397cc7a move src file to seperate direcotry 2026-04-01 22:29:20 +02:00
228cefb921 feat: replace namespace permissions with per-node graph permission model (can_read/can_create_rel/can_write/has_ownership)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 22:11:15 +02:00
52a975b66d feat: add OIDC authentication for server mode 2026-04-01 19:33:15 +02:00
7bce56384f add dockerfiler 2026-04-01 15:12:00 +02:00
7292751ef7 feat: add remote NodeService client backed by the HTTP API
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 13:18:31 +02:00
3dfc46c3ff feat: add ax serve command with JSON API backed by NodeService
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 13:04:29 +02:00