Commit graph

16 commits

Author SHA1 Message Date
ookami125
d1b90cfdcb webui: fix relative timestamps (seconds, not milliseconds)
f.date/f.ago assumed JS milliseconds, but the backend emits Unix epoch
seconds everywhere (created_at, feed lastUpdate, rule lastMatch, …), so
every real timestamp rendered as ~20607 days ago (now - ~1.78e9 ms).
Treat the formatter input as seconds. Search results show the indexer's
pubDate string directly rather than mis-parsing it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 01:25:43 -04:00
ookami125
2df3f11cf4 webui: account management UI (users + change password)
Settings now has an Account card (current user/role + change password)
and, for admins, a Users card to add/delete users, reset passwords, and
toggle admin/user roles. Login captures the role; the Users section is
admin-only. api.js gains the account/user endpoints.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 21:48:05 -04:00
ookami125
530390089c webui: send article/result title with RSS manual downloads
So the daemon names the torrent after the feed article or search
result instead of the temp upload filename.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 20:59:06 -04:00
ookami125
b1f33d4194 webui: always show RSS Add button + live rule match preview
- Article Add button now shows whenever the item has any source
  (magnet, enclosure, or a plain <link>/Atom href), and the manual
  download falls back to the link URL. Fixes missing + on feeds that
  only provide a <link> to the torrent.
- The rule editor now shows a live "current matches" list that updates
  as you type the filters / toggle regex / pick feeds, mirroring the
  daemon's matcher, with grabbed items dimmed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 20:51:08 -04:00
ookami125
0aeb039586 webui: RSS manual download / repull / rule-run controls
- Per-article Add button now sends the article key and reflects the
  grabbed state (✓ Added, disabled).
- Per-feed ⟳ repull plus a Refresh-all button.
- Per-rule ⏵ "Run now" that re-applies the rule to existing articles
  and reports how many were added.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 01:45:49 -04:00
ookami125
ed906a3549 webui: RSS + Search tab management UI
Wire the RSS and Search tabs to the new backend:

- RSS: add/remove feeds, per-article "Add" (download), and a full
  auto-download rule editor (match/regex, must[-not]-contain, per-feed
  scope, category, save path, paused) with edit/delete.
- Search: results now add via the server-side download endpoint
  (magnet/.torrent); add a Torznab indexer manager (list/add/remove).
- api.js: feed/rule/indexer/download client methods.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 01:01:36 -04:00
ookami125
d8c4a96e88 webui: category default download location in add modal
The add-torrent save path now shows the selected category's default
location (its own save path, else the global default), greyed and
read-only. Clicking makes it editable; an overridden path then stays
put when the category changes. Resolves the "category default location
does nothing" issue by feeding the category's save path into the add.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 00:33:35 -04:00
ookami125
d55fc35c72 webui: edit-category modal + dropdown dedupe
Add an "Edit category…" context-menu item and modal that renames a
category and/or changes its save path (Uncategorized: path only).
Filter empty-named categories out of the add/set-category dropdowns so
the stored Uncategorized save-path entry doesn't double the option.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 00:29:16 -04:00
ookami125
c3985fe742 webui: float the tags dropdown over content (fixed-position)
The checkbox menu now uses position:fixed anchored under the button,
overlaying the rest of the dialog instead of expanding it. Closes on
outside click; repositions on scroll/resize.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 00:26:58 -04:00
ookami125
c15cecaa5f webui: tags as a checkbox dropdown on add (not a comma string)
Replace the comma-separated tags input with a checkbox dropdown of
existing tags plus inline new-tag creation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 00:18:29 -04:00
ookami125
54ac49fa33 webui: tags field in the add-torrent modal
Comma-separated tags input with a datalist of existing tags.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 00:02:11 -04:00
ookami125
a35b93caca webui: add an "Uncategorized" option to category selectors
Add-torrent and set-category dropdowns default to Uncategorized so a
category is no longer forced; set-category preselects the current one.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 23:34:50 -04:00
ookami125
9a1d67acd4 webui: automation settings panel, set-location, responsive layout
- Automation tab: settings form (define_settings) beside the editor,
  stacking above it when narrow; script/settings save split.
- Set location modal: current location + reset checkbox.
- saveScriptSettings/setSavePath API wiring; plugins panel.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 23:22:00 -04:00
ookami125
5a5b5f4330 add: upload the actual .torrent bytes
readTorrentFile only returned parsed metadata for the preview, so a
file-based add sent no torrent content and the server rejected it. Include
the raw bytes as base64 ("data") alongside the preview fields so uploads
actually add.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 00:43:26 -04:00
ookami125
0b35571565 Make existing controls real + add robustness pass
Wire up controls that were rendered but inert, expose unused server
actions, and harden the live update path.

Controls now functional:
- File priority dropdowns (Content tab) now persist via new
  setFilePriority server action
- Context menu: Set location, Limit download/upload rate, Set share
  limit (wire setSavePath/setDownLimit/setUpLimit/setRatioLimit)
- Trackers sidebar filter actually filters (snapshot now carries
  per-torrent trackerHosts)

Robustness:
- Grid updates cells in place when row order/columns are unchanged
  (preserves text selection/scroll, no per-second listener re-bind)
- Boot retries until the server responds; SSE drops show a
  "Reconnecting" banner; failed actions/add/delete surface a toast
- Prune selection/detail for torrents that disappear
- Drop Backspace-as-delete (kept Delete)

Cleanup:
- Remove pseudo DHT/PeX/LSD names from the real-tracker host pool in
  mock data (they leaked into announce URLs and the sidebar)
- Remove dead detailTab import/export

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 21:24:20 -04:00
ookami125
bc1be49a37 Initial commit: NAUT torrent web UI with stubbed server
Advanced torrent client web UI aimed at power users, with a
zero-dependency Node stub server (built-in http + SSE) serving live
mock data.

- Dense sortable/multi-select torrent grid with live updates
- Detail panel: General/Trackers/Peers/Content/Pieces (resizable)
- Sidebar filters: status, categories, tags, trackers
- Create/delete categories and tags (sidebar + right-click)
- Add via magnet or client-side-parsed .torrent upload
- RSS, integrated search, and read-only engine views
- Hand-drawn SVG icon set, dark theme, keyboard shortcuts

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 21:15:31 -04:00