Skip to content

Releases: Tomasneto404/linkPage

v1.0.3 — File editor, audit log, stock icons & more

Choose a tag to compare

@Tomasneto404 Tomasneto404 released this 01 Jun 19:19

LinkPage v1.0.3 — a big release focused on power-user editing, observability, and polish.

Highlights

  • In-place file editor — edit attached text files (HTML, XML, JSON, TXT, CSV, MD, SVG) right in the admin: expand view, line numbers, language-aware syntax highlighting, a Ctrl/Cmd+F find bar, and Ctrl/Cmd+S to save. Changes go live on the public page immediately.
  • Stock icon picker + colours — choose from a built-in line-icon set and a colour instead of uploading an image. File links get a coloured file-type icon, and links with no icon fall back to the Settings favicon.
  • Admin audit log — every admin change and every link click is recorded with the entity's name, time, IP and device. Live auto-refresh, search & type filters, and CSV/JSON export, under Settings → Security → View Log.
  • Subsections — sections can now contain one level of subsections. Add and drag-reorder them in the sidebar; the public page renders the nesting, and you can drop a link straight into a subsection.

Admin

  • Redesigned link cards — a cleaner, premium card: icon + title header, description, tags, and a footer with views + date; action buttons reveal smoothly on hover.
  • Smarter bulk editing — shift-click to select ranges, Select all, Esc to deselect, and move the selection into a specific section/subsection. Drag a link card onto any group, section, or subsection in the sidebar to move it.
  • Icon library: export / import / bulk delete — export the whole library as a single file and import it elsewhere (idempotent, de-duped by content); multi-select to delete in bulk. The Settings favicon now appears in the library for reuse.
  • In-app update checker — Settings → About shows the current build, the latest GitHub release, and its notes; a pulsing dot on the Changelog pill flags when an update is available.

Public page

  • Multi-keyword search — pin keywords as chips (press Enter), combined with AND, matching link names, URLs, groups, sections and subsections.
  • Copy link button — one-click copy on every card with a toast confirmation.
  • Per-group unlock behaviour — password-protected groups can auto-lock after 30 s (kiosk-safe) or stay unlocked for the whole browser session.
  • Default link icon falls back to the Settings favicon when nothing else is available.

Backend

  • Versioned database migrations — transactional, version-tracked migrations run on every startup and log what changed, so upgrading from any past version is safe and automatic.
  • Faster saves — favicon fetching no longer blocks saving a link; it loads in the background (with an overall time budget) and appears live via Server-Sent Events. TLS verification is skipped for intranet hosts, with a smarter fallback walk.
  • Full export / import of links, groups, sections and subsections (idempotent re-import).

New API endpoints

/api/audit (+ /export), /api/icons/export, /api/icons/import, /api/icons/bulk-delete, /api/links/:id/file (GET/PUT), /api/favicon-preview, /api/version, /api/events (SSE).


🐳 Docker users: docker compose pull && docker compose up -d (or rebuild from source). The database schema migrates automatically on startup.

v1.0.2 — Icon library, live updates & smarter favicons

Choose a tag to compare

@Tomasneto404 Tomasneto404 released this 26 May 22:07

Highlights

  • In-app update checker — Settings → About → "Check for updates" polls GitHub Releases (cached 6 h) and shows the current build, latest available, and release notes in a popup. A pulsing dot on the sidebar Changelog pill also
    flags new versions.
  • Reusable icon library — every uploaded icon is added to a shared, searchable library; pick from it when creating/editing a link, manage and delete unused icons, optionally auto-save fetched favicons.
  • Live updates on the public page — Server-Sent Events stream fade-refreshes opened tabs within ~250 ms of any admin mutation (debounced, transition-aware, reconnect on drop).
  • Smarter favicon fetching — three-tier strategy (HTML <link rel="icon">/favicon.ico → Google) so intranet URLs resolve correctly. Live preview in the link form uses the same fetcher.
  • Drag-to-reorder sections within a group (admin sidebar → public page).
  • Remember last viewed group on the public page; the admin-configured default only applies to brand-new visitors.
  • HTML / XML / JSON attachments + raised attachment cap from 25 MB to 100 MB.
  • Logo links to the public page from both admin and public headers.

Stability & infrastructure

  • Versioned database migrations — transactional, idempotent, version-tracked. Any past version upgrades cleanly with a clear log line on startup.
  • Settings modal caps at viewport height and scrolls internally — close button stays reachable on small screens.
  • Fix: icon bleeding between consecutive link edits — uploading an icon for link A no longer reappears on link B if you edit it right after.

New API endpoints

  • GET /api/events — public Server-Sent Events stream for live updates
  • GET /api/version — current vs latest GitHub release (admin)
  • GET /api/favicon-preview — server-side favicon fetch used by the live preview (admin)
  • GET/POST /api/icons, DELETE /api/icons/:id — icon library
  • POST /api/settings/save-favicons — toggle library auto-save

Configuration

  • New env var RELEASES_REPO (default Tomasneto404/linkPage) — point the update checker at a fork or private mirror.

v1.0.1 — Multi-groups, sections, file attachments & mobile polish

Choose a tag to compare

@Tomasneto404 Tomasneto404 released this 22 May 23:46

LinkPage v1.0.1 — Multi-groups, sections, file attachments & mobile polish

A big update focused on organization, access control, and mobile UX.

Highlights

  • Multiple groups per link — assign a link to as many groups as needed via a checkbox multi-select in the link modal.
  • Sections within groups — add, rename, reorder, and delete named section headings inside any group; cards render grouped by section in the public grid.
  • File attachments — link cards can now point to an uploaded file (PDF, Office docs, archives, images, text) instead of a URL. 25 MB cap, safe-extension whitelist, and a URL/File toggle in the modal.
  • Password-protected groups — gate sensitive groups with a password. Unlock state uses HMAC-signed cookies with a 30 s auto-relock; links also published in a public group stay visible.
  • Hide links from the public page — keep a link in the admin without exposing it. Eye-toggle on every card, enforced by both /api/links and /r/:id.
  • Custom group colors — pick any color via a "+" swatch that opens the native color picker.
  • Pinned default group — choose which group the public page opens on (Settings → Public Access → Default Group).
  • Custom browser-tab favicon — upload your own .ico / .png favicon from Settings → Branding.
  • Long-press to bulk-select — press-and-hold (450 ms) any card on touch or mouse to enter selection mode, with iOS-style scale + ring feedback and a light haptic tap on supported devices. New Hide / Show buttons in the bulk toolbar.

Mobile UI

  • Slide-over sidebar, full-width modal sheetsompact phone header on both the public andadmin pages.
  • Admin top bar collapses theme / settings / overflow menu on phones, so the search barfinally has room to breathe.
    Polish
  • Admin sidebar redesign: hover actions fade in over the count badge instead of truncating group names; active state is clearly distinct from hover; a vertical-bar cons under their group.
  • Unified card meta strip — group tags, "Hidden", "Dead link", and click-count chips now share the same baseline and spacing.
  • Collapsible Changelog block in the admin sidebar, with a link to the GitHub repo.
    Security & fixes
  • Auth rate limiter now only counts failed verifications, so refreshing the admin page no longer locks you out of your own session. Brute-force protection is preser
  • Multer file-filter errors return a JSON 400 instead of an HTML 500.
  • Inline section input has a once-guard so th double-creating duplicate sections.

Schema

  • New tables: link_groups, sections.
  • New columns: groups.password_hash, links.is_hidden, links.file_path, links.file_name, link_groups.section_id.
  • Idempotent migration on first startup copielues into link_groups — no manual stepsrequired.

New API endpoints

POST/DELETE /api/settings/favicon · POST /api/settings/pinned-group · POST /api/links/:id/visibility · POST
/api/groups/:id/unlock · POST /api/groups/:idsections · PUT/DELETE /api/sections/:id · POST /api/sections/reorder

Upgrading

docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up

Your existing data is migrated automatically