Emoji (📚🔖🏷️ ✎ ✕ 🕓⏳🤖⚠️🔍) rendered in each platform's own
colorful style and looked inconsistent. Add app/templates/_icons.html
with small inline SVG macros (Lucide-style, MIT-licensed path data,
stroke=currentColor) and use them throughout instead, so icons pick
up the muted/accent text colors like the rest of the UI.
The needs-review bookmark toggle now uses an outline vs. filled icon
for its two states instead of swapping emoji.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Links can be bookmarked for a later look via a toggle button on the
card (🏷️/🔖), shown with a yellow border while flagged. A new
sidebar section "Merkliste" links to /?review=1, filtering to just
the flagged links; the count updates live via the existing facets
query.
Since the project has no migration framework, add a minimal
startup check that ALTER TABLEs in the needs_review column for
existing SQLite databases (create_all only creates missing tables).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The category and manufacturer fields in the edit form now offer the
already-used values via a datalist dropdown, while still allowing a
new value to be typed. Both edit entry points (open edit form and AI
re-describe) pass the current lists.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Cards previously had ragged heights because summaries vary in length.
Follow the community-scripts.org card pattern instead: fixed-height
title and summary blocks (clamped to 2 and 3 lines with an ellipsis),
a colored letter avatar derived from the domain, category and
manufacturer as badges in the header, tags in a single clipped row,
and domain plus added-date in a footer.
The avatar color is derived locally from the domain, so no external
favicon requests are made.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The layout was capped at 1200px and listed links in a single column.
Drop the cap and lay the cards out in a grid: three per row on wide
screens, two from 1000px, one below that.
To make the narrower cards work, shorten the edit action to an icon
button so the title and URL keep their room, and let the edit form's
field and button rows wrap.
Also fixes pre-existing horizontal overflow on phone widths by
stacking the sidebar above the content and letting the add-link form
wrap. Grid tracks use minmax(0, 1fr) so cards can shrink below their
content's intrinsic width instead of pushing the page wider.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The feature list was missing the recently added link editing, AI
re-description, sorting, and added-date display. Also document
APP_VERSION, which controls the version shown in the footer.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a sort dropdown offering newest/oldest first and name A-Z/Z-A.
Sorting applies to plain listings, text search, and semantic search
results, and the sidebar facet links preserve the current choice.
Invalid sort values fall back to the default.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The created_at timestamp was already stored but never displayed. Add
a "datum" Jinja filter that converts the stored UTC value to local
time and render it on both the link card and the edit form.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Links can now be edited manually (title, summary, category,
manufacturer, tags) via an inline edit form, with a "KI neu
beschreiben lassen" action that re-fetches the URL and lets the AI
regenerate all fields. Editing recomputes the search embedding.
Also adds an app footer showing author, version, and hostname.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
pct exec runs as root while /opt/linkvault is owned by the linkvault
user, so newer git versions refuse to operate on it. Mark the
directory as safe before running git pull.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Drop the Authorization header/GIT_TOKEN requirement from the default
examples since the repo is no longer private; keep it documented as
a fallback for if the repo is made private again.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Make explicit that the plain "bash scripts/proxmox/update-linkvault.sh"
form only works if the repo was cloned onto the Proxmox host itself and
you're running it from within that checkout — this was the cause of a
"No such file or directory" error when tried directly.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The example was missing "export GIT_TOKEN=...", causing an empty
Authorization header when copy-pasted as-is.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds scripts/proxmox/update-linkvault.sh to pull the latest git
changes, refresh dependencies, and restart the systemd service on an
existing container. Documents usage in the README.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The hardcoded template version (12.7-1) no longer exists on the
mirror, causing "no such template" errors. Resolve the latest
available debian-12-standard template instead of pinning a version.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The repo is private, so unauthenticated curl/git clone returns 404.
Add GIT_TOKEN support for both the raw-file download and the git
clone inside the container, and document it in the README.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Add usage instructions, raw-link one-liner, config table, and
post-install steps for the helper script.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Creates a Debian 12 LXC container and sets up LinkVault as a systemd
service inside it, following the tteck/community-scripts pattern.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
FastAPI + HTMX Web-App zum Speichern von Links mit automatischer
KI-Kategorisierung, Zusammenfassung und semantischer Suche (OpenAI).
Mehrbenutzer mit Login, SQLite-Persistenz, Docker/Docker-Compose-Setup.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>