Commit Graph

19 Commits

Author SHA1 Message Date
Mikhail Kilin
5cd6f5b96d Add delete button to project list on main page
All checks were successful
ci/woodpecker/push/build Pipeline was successful
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 15:22:37 +03:00
Mikhail Kilin
94bf067c41 Add VPN detection: show blocker when not on home IP
Check public IP via api.ipify.org on mount and display
"Выключи VPN" fullscreen message if it doesn't match
the expected home IP. Gracefully falls through on fetch errors.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 14:56:55 +03:00
Mikhail Kilin
87eb93512b Add error logging and explicit column list in queries
All checks were successful
ci/woodpecker/push/build Pipeline was successful
Explicit SELECT columns instead of SELECT * to avoid FromRow issues.
Add eprintln for S3 and DB errors to diagnose 500s.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 14:53:55 +03:00
Mikhail Kilin
3bddb0012d Add URL hash routing for direct project links
All checks were successful
ci/woodpecker/push/build Pipeline was successful
Opening #/project/123 navigates directly to the project page.
Back button and project selection update the hash accordingly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 14:28:15 +03:00
Mikhail Kilin
570e0ca643 Rewrite app: entries → projects with S3 file storage
All checks were successful
ci/woodpecker/push/build Pipeline was successful
Replace flat text entries with project-based structure.
Each project has name, local/corp fields, content textarea,
and file upload (up to 100MB) stored in MinIO S3.
New API: CRUD projects + file download + content copy.
Frontend: two views (project list + project page).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 13:50:28 +03:00
Mikhail Kilin
d23043a489 Remove rollout status check (too many open files in CI)
All checks were successful
ci/woodpecker/push/build Pipeline was successful
Rollout restart is enough — status monitoring is optional and
fails with fsnotify watcher limit in the CI pod.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 11:24:57 +03:00
Mikhail Kilin
362bc5757b Add deploy step: rollout restart after image build
Some checks failed
ci/woodpecker/push/build Pipeline failed
Uses ServiceAccount with minimal RBAC (get/patch deployments in bbb namespace).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:53:34 +03:00
Mikhail Kilin
a74fd5c859 Use docker_username/docker_password secrets (match other repos)
All checks were successful
ci/woodpecker/push/build Pipeline was successful
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:44:02 +03:00
Mikhail Kilin
24aa225481 trigger 2026-03-18 06:57:07 +03:00
Mikhail Kilin
54aabd0ef9 Switch CI from plugin-docker-buildx to plugin-kaniko
docker-buildx requires privileged mode which is blocked in
Woodpecker v3. Kaniko builds in userspace, matching bcard setup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 06:55:23 +03:00
Mikhail Kilin
e11e53cb33 Trigger CI rebuild
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 06:53:52 +03:00
Mikhail Kilin
f859d39678 Move CI config to .woodpecker/ directory (Woodpecker v3 default)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 06:52:34 +03:00
Mikhail Kilin
6eb7935ed8 Trigger CI build
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 06:49:18 +03:00
Mikhail Kilin
7467206a5c Fix clipboard copy on HTTP (non-secure) contexts, update docs
navigator.clipboard is undefined on non-HTTPS origins — add
execCommand fallback. Also sync CLAUDE.md with actual project
structure (Dockerfiles, nginx, CI, correct API/button descriptions).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 00:09:54 +03:00
Mikhail Kilin
b2c799f429 Bump rust image to 1.88 (home crate requires it)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 23:08:31 +03:00
Mikhail Kilin
aff1274b18 Fix type-only import for EntryMeta (verbatimModuleSyntax)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 23:06:46 +03:00
Mikhail Kilin
1e225e9af3 Add k3s deployment: Dockerfiles, nginx config, CI pipeline
- Backend Dockerfile: multi-stage rust:1.87 → debian:bookworm-slim
- Frontend Dockerfile: multi-stage node:22-alpine → nginx:alpine
- Frontend nginx.conf: serve static + proxy /api/ to backend service
- Change API_URL to relative /api for containerized deployment
- Woodpecker CI pipeline to build and push images to Gitea Registry
- Add repository URL to CLAUDE.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 22:29:20 +03:00
Mikhail Kilin
37f86740a2 feat: hide entry content from list, add GET /api/entries/:id/content endpoint
Content is no longer returned in the entries list. A separate endpoint
returns plain text content for clipboard copying on demand.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 16:23:05 +03:00
Mikhail Kilin
cc0bdedd88 asdasd 2026-03-17 16:22:13 +03:00