Commit Graph

88 Commits

Author SHA1 Message Date
eliaskohout 02c5b4ae40 remove binary 2026-04-14 13:03:13 +02:00
eliaskohout 388e24a8df ci: cross-compile binaries in workflow instead of downloading from APK registry
Build and Publish Arch Package / build-arch (amd64, x86_64) (push) Successful in 58s
Build and Publish Arch Package / build-arch (arm64, aarch64) (push) Failing after 1m2s
Build and Publish Docker Image / build-apk (amd64, x86_64) (push) Successful in 52s
Build and Publish Docker Image / build-apk (arm64, aarch64) (push) Failing after 47s
Build and Publish Docker Image / build-and-push-docker (push) Successful in 10m50s
v0.1.4
2026-04-14 11:24:37 +02:00
eliaskohout b5ef107f9c ci: use pre-built APK in Docker image instead of compiling from source
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 Publish Docker Image / build-apk (amd64, x86_64) (push) Successful in 46s
Build and Publish Docker Image / build-apk (arm64, aarch64) (push) Successful in 51s
Build and Publish Docker Image / build-and-push-docker (push) Failing after 11m58s
2026-04-14 00:59:31 +02:00
eliaskohout 21a01e9412 fix: include client_secret in device authorization request
Build and Publish APK Package / build-apk (arm64, aarch64) (push) Failing after 46s
Build and Publish Arch Package / build-arch (arm64, aarch64) (push) Successful in 1m2s
Build and Publish APK Package / build-apk (amd64, x86_64) (push) Waiting to run
Build and Push Docker Container / build-and-push (push) Has been cancelled
Build and Publish Arch Package / build-arch (amd64, x86_64) (push) Has been cancelled
2026-04-14 00:48:16 +02:00
eliaskohout 77e2610fe8 feat: add RFC 8628 device authorization flow for out-of-VPN authentication
Build and Publish APK Package / build-apk (amd64, x86_64) (push) Successful in 52s
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 2m11s
Build and Publish Arch Package / build-arch (arm64, aarch64) (push) Successful in 1m6s
Build and Push Docker Container / build-and-push (push) Successful in 20m0s
2026-04-13 23:32:18 +02:00
eliaskohout 2c48c75387 fix: use FindDataRoot in FindOrInitSQLiteStore for consistent database location
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 Push Docker Container / build-and-push (push) Successful in 17m44s
Build and Publish Arch Package / build-arch (amd64, x86_64) (push) Failing after 58s
Build and Publish Arch Package / build-arch (arm64, aarch64) (push) Failing after 1m0s
v0.1.3
2026-04-02 14:26:13 +02:00
eliaskohout e04a44cdcf remove line count from readme 2026-04-02 13:41:47 +02:00
eliaskohout b6c8a158af docs: simplify README and extract full reference to USAGE.md
- Condensed README to quick overview (~40 lines) with key features
- Added install instructions for Alpine, Arch, source, and Docker
- Created USAGE.md with full command reference, server mode, OIDC, and permission model docs
- New features documented: server mode, OIDC authentication, per-node permissions, multiplatform auto-builds

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-02 13:38:38 +02:00
eliaskohout 5f0f8f3396 fix: update Dockerfile Go version to 1.25 and disable toolchain auto-download
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 48s
Build and Publish Arch Package / build-arch (amd64, x86_64) (push) Successful in 1m4s
Build and Publish Arch Package / build-arch (arm64, aarch64) (push) Successful in 1m6s
Build and Push Docker Container / build-and-push (push) Successful in 17m50s
- Bump golang:1.24-alpine to golang:1.25-alpine to match go.mod requirement
- Set GOTOOLCHAIN=local to prevent segfault from toolchain download in Docker

This fixes the multiplatform build failure where go mod download would
attempt to download Go 1.25.0 in the container and crash.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-02 13:25:19 +02:00
eliaskohout 24fb3a8b62 fix: prevent segfault in login command when session doesn't exist
LoadSession() was returning nil when the session file didn't exist (first login).
The login command then tried to dereference nil when setting session.Token,
causing a panic. Now LoadSession() returns an empty Session with the path set,
so callers can always use the returned session.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-02 13:23:34 +02:00
eliaskohout 89432e608b feat: replace in_namespace relation with ownership-based namespace membership
Remove the in_namespace edge relation. A node now belongs to a namespace if that
namespace has has_ownership on it. This simplifies the model: namespace membership
is determined by the ownership chain rather than a separate relation type.

Changes:
- Remove RelInNamespace constant
- Add Namespace fields to AddInput, UpdateInput, and ListFilter
- Update Add() to resolve namespace from input and assign it as owner
- Update List() to filter by namespace ownership instead of in_namespace edges
- Update() can now transfer nodes between namespaces via ownership transfer
- Remove in_namespace self-references from ensureNamespace/ensureGlobalNamespace

The ownership chain now fully describes both permissions and namespace membership,
reducing redundancy. All tests pass with the new model.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-02 13:20:03 +02:00
eliaskohout 63044a697d feat: change node ownership to namespace instead of creator
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
eliaskohout 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
eliaskohout bcd52e0ae6 update project page url for package
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
eliaskohout 4912f37688 remove claude markdown 2026-04-02 05:08:44 +02:00
eliaskohout 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
eliaskohout 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
eliaskohout 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
eliaskohout 30f802b5ac feat: enable multiplatform Docker image builds for amd64 and arm64
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
eliaskohout 1ad9fb8785 fix: disable dependency tracing in Alpine package build
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
eliaskohout 8ab2e4348d fix: disable strip and check in Alpine package build
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
eliaskohout d55d423fea fix: fix CI workflow failures for Arch and Alpine package builds
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
eliaskohout f1f8cb5757 fix: build Arch packages without archlinux container
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
eliaskohout 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
eliaskohout fa265a1ad1 feat: build Arch packages for x86_64 and aarch64
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
eliaskohout 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
eliaskohout bc798f7bf2 feat: add Arch Linux package and CI workflow
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
eliaskohout 63c33937ee correct mail in alpine package 2026-04-02 03:46:02 +02:00
eliaskohout f67526e64a rename docker image in pipeline 2026-04-02 03:44:15 +02:00
eliaskohout 9d29f4ad2b fix: use correct curl flags for Gitea Alpine registry upload
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
eliaskohout 81c63ad05f fix: run apk update and pre-install build-base before abuild
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
eliaskohout 1438e7b4b9 fix: install nodejs before checkout (required by actions/checkout)
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
eliaskohout c94e57d9ba fix: clean up apk-publish workflow
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
eliaskohout 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
eliaskohout c12452fff1 fix: use abuild-keygen key for signing instead of mismatched openssl key
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
eliaskohout 4374befa42 refactor: remove AX_DB_PATH env var support from store layer
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
eliaskohout 595bb78599 Fix APKBUILD: use direct srcdir path in build function
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
eliaskohout e6a2e01d9d Fix apk-publish: add build-base dep, net option, and apk update
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
eliaskohout 1e6c58a0cb Fix apk-publish workflow: place source tarball in APKBUILD directory
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
eliaskohout f11d1d0cac Fix apk-publish workflow: add git safe.directory config
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
eliaskohout c17952e6ac Fix apk-publish workflow: create source tarball from local git checkout
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
eliaskohout aa5f124b5f Fix apk-publish workflow: run abuild as non-root user
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
eliaskohout 58b8fef731 Fix apk-publish workflow: add nodejs dependency and use dynamic home path
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
eliaskohout cac3221bbf Add Alpine APK packaging and update CI for versioned releases
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
eliaskohout 64d4a9fe90 rename ax server docker file
Build and Push Docker Container / build-and-push (push) Successful in 1m47s
2026-04-02 02:36:54 +02:00
eliaskohout 4461c4fcff add docker build pipeline
Build and Push Docker Container / build-and-push (push) Successful in 4m38s
2026-04-02 02:28:19 +02:00
eliaskohout 252503a572 refactor: move e2e tests into src/e2e directory 2026-04-02 02:23:00 +02:00
eliaskohout 6821112c8f refactor: remove AX_DB_PATH env var, fix Dockerfile for src/ layout 2026-04-02 02:19:48 +02:00
eliaskohout 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
eliaskohout 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