Skip to content

Range download support#1

Open
duckie wants to merge 48 commits intomasterfrom
range-download-support
Open

Range download support#1
duckie wants to merge 48 commits intomasterfrom
range-download-support

Conversation

@duckie
Copy link
Collaborator

@duckie duckie commented Feb 20, 2026

No description provided.

duckie and others added 30 commits February 20, 2026 02:06
Merge branch 'master' into range-download-support
Pass the VERSION environment variable as a --build-arg to Docker
buildx so the version embedded in the plik binary matches the
Docker image tag.

- release.sh: forward VERSION as --build-arg
- Dockerfile: accept VERSION ARG in client and server builder stages
- docker-build-pr.yaml: set VERSION alongside TAG
ci(docker): pass VERSION to Docker build system
Backend:
- Add `admin` (bool) filter to GetUsers handler and metadata query
- Wire `provider` query param through GetUsers handler
- Use raw SQL for admin filter to avoid GORM zero-value pitfall

Frontend:
- Add sort controls (Date/Size, Desc/Asc) to users view
- Add provider filter chips (All/local/google/ovh/oidc)
- Add admin role filter (All/Admin/Non-Admin)
- Display creation date on user cards with tooltip
- Add "View uploads" quick link button on user cards
- Fix token filter bug: use upload.token (auth token) not
  upload.uploadToken (per-upload management token)
- Show "Never" instead of empty text for non-expiring uploads

Tests:
- Add TestGetUsersFilterByProvider (handler)
- Add TestGetUsersFilterByAdmin (handler + metadata)
- Add 5 Playwright e2e tests for filter controls, creation date,
  admin/provider filters, and user-to-uploads quick link

Docs:
- Update ARCHITECTURE.md endpoint description
Remove hardcoded "v" prefix from BuildInfo.String() and compute a
richer version for PR Docker builds: <latest-tag>:pr-<number>:<short-commit>
(e.g. 1.4-RC4:pr-555:6fde4f).
fix(docker): improve PR build version string
Colons in the VERSION string caused tar to interpret the archive
filename as a remote host path (e.g. plik-server-1.4-RC4:pr-636:abc
is parsed as host:path), breaking the build with "resolve failed".
fix(docker): use dashes instead of colons in PR build version string
When no ~/.plikrc exists and plik --login is used, the first-run
setup wizard in LoadConfig() would trigger an interactive login flow
(if auth is enabled/forced on the server), and then main() would
trigger it again via the --login handler.

Skip the wizard's interactive login when --login is already set,
since main() will handle it after config is saved.
…angelog

For stable builds, exclude RC releases from the version endpoint's
releases list to avoid cluttering the upgrade changelog (e.g. 1.3.8
to 1.4.0 no longer shows intermediate RC changelogs). RC builds
retain all releases for RC-to-RC visibility.

When the client's version is not found in the releases list (e.g.
RC client upgrading to stable), show the target version's changelog
instead of skipping changelog display entirely.

Also fix off-by-one: currentReleaseIndex > 0 to >= 0 so the first
release in the list can be used as a changelog boundary.
- Add searchUsers() API function for GET /users/search
- Add debounced search input (300ms, min 2 chars) to admin users view
- Show dropdown with up to 5 results (login, name, email, admin badge)
- Click result navigates to user's uploads
- Search respects active provider/admin filters
- Add 2 Playwright e2e tests (input visibility, search + select flow)
- New 'plikd fakedb' subcommand populates a SQLite DB with test data
- Parameterizable: --users, --tokens, --uploads, --files, --anon-uploads
- Default output: /tmp/test-plik.db (safe, no risk of overwriting prod)
- Creates admin/plikplik user for login
- Randomised names, emails, providers (~10% admins, 50/50 token usage)
- Prints ready-to-use plikd launch command on completion
…utton

- Add Total field to PagingResponse with WithTotal() builder
- Add CountUsers(provider, admin) replacing unfiltered CountUsers()
- Add CountUploads(user, token) method
- Admin handlers attach total counts to paging responses
- Frontend shows 'Showing X of Y' for users and uploads
- Fix user search: clicking result filters user list instead of navigating to uploads
- Add view-user button (🔍) in uploads filter bar to jump to user tab
- Add e2e tests for result counts (users + uploads)
- Document TOCTOU race on count queries
Add helm-docs `# --` annotations to all values in values.yaml.
Create README.md.gotmpl template with installation instructions
and quick-start examples. Generate README.md with a complete values
reference table.

Add `make helm-docs` target and integrate it as a dependency of
`make helm`. Document the values reference in kubernetes.md.

Add helm-docs CI job to tests.yaml that catches forgotten
regeneration by checking for uncommitted changes after running
make helm-docs.
fix(client): prevent double login and improve update changelog display
docs(helm): add helm-docs annotations and generate chart README
feat(admin): add user management controls, search, and fakedb tool
- Add changelog/1.4-RC5
- Update Helm chart CHANGELOG
bodji and others added 18 commits February 25, 2026 17:50
- Add actions/setup-go@v5 before nfpm install to ensure Go toolchain is available
- Add GOPATH/bin to GITHUB_PATH so nfpm is on PATH for subsequent steps
- Fixes "nfpm: command not found" in 1.4-RC5 release workflow
…t-test

fix(ci): add setup-go for nfpm install and add oneshot E2E test
GPG signing fails in non-interactive CI with "Inappropriate ioctl for device"
because gpg tries to prompt on a TTY. Adding --pinentry-mode loopback allows
gpg to read the passphrase non-interactively.
- Add allow-loopback-pinentry to gpg-agent.conf and reload agent
- Pass --passphrase "" to gpg signing commands for keys without a passphrase
Pipe empty passphrase via stdin with --passphrase-fd 0 instead of
--passphrase flag which GPG rejects in batch mode.
- Configure gpg-agent with allow-preset-passphrase
- Preset GPG_PASSPHRASE for all secret keygrips after import
- Add GPG_PASSPHRASE secret to release workflow env
- Remove gpg-preset-passphrase (may not exist on CI runners)
- Pass --pinentry-mode loopback --passphrase "$GPG_PASSPHRASE" directly
- Only needs allow-loopback-pinentry in gpg-agent.conf
Add autocapitalize="off" to the login input field to prevent mobile
keyboards from suggesting an uppercase first letter for usernames.
fix(webapp): disable autocapitalize on login input
Include file.Size in getParams() so the server receives the declared
file size when creating uploads. This allows the server to use the
declared size for quota enforcement on in-flight uploads.

Regular files (via AddFileFromPath) have their size set from os.Stat.
Stdin and archive files naturally stay at 0 (size unknown).

Add unit tests for getParams() covering reader-based files, path-based
files, and metadata propagation.
…chars

fix: URL-encode filenames with special characters to prevent 404 errors
Show a green checkmark on successful file uploads and a red cross
on failures for clearer visual feedback in the CLI output.
feat(client): add ✅/❌ emoji to upload progress bar
fix(client): declare file size in upload metadata
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants