Commit graph

112 commits

Author SHA1 Message Date
lichenblankie
0399e62c0f fix moderation inputs: add input:not([type]) selector for unstyled form fields 2026-06-05 04:34:42 +00:00
lichenblankie
5fda14cb8f kodama2 theme: add forum-action styling (FORUM_CSS no longer provides colors) 2026-06-05 04:33:49 +00:00
lichenblankie
8f1d07a768 add fade-in transition to content 2026-06-05 04:29:39 +00:00
lichenblankie
158be950d2 tinyweb-site theme: add forum-action and forum-form input styling 2026-06-05 04:28:07 +00:00
lichenblankie
37bdd49690 add tinyweb-site theme: clean, light, minimal 2026-06-05 04:26:22 +00:00
lichenblankie
17ba5700a7 add {{site_name}} placeholder to wrap_page and kodama2 theme 2026-06-05 04:17:02 +00:00
lichenblankie
49654a1fe3 hide forum link from template when forum disabled: {{forum_link}} placeholder + DB migration 2026-06-05 02:29:18 +00:00
lichenblankie
712b18ff89 add forum security caveat link to Security section 2026-06-05 02:18:54 +00:00
lichenblankie
81d0d7c9aa update forum section README: manual sync by default, gossip fanout, auto-block threshold 2026-06-05 02:16:50 +00:00
lichenblankie
cc7fde6798 forum README: gossip scaling note 2026-06-05 01:58:39 +00:00
lichenblankie
e29a905506 forum README: auto-discovery toggle and auto-prune 2026-06-05 01:00:57 +00:00
lichenblankie
681467260d forum README: auto-discovery note 2026-06-05 00:55:34 +00:00
lichenblankie
b7aa1f69e8 forum plugin integration: dispatch, style toggle, nav link, URL prefill, SO_REUSEADDR 2026-06-05 00:32:29 +00:00
lichenblankie
401f775b14 Distribute via git clone + docker compose, not registry pull 2026-06-03 04:39:58 +00:00
lichenblankie
8b43fb51f3 Fix container mode with Docker socket mount
All checks were successful
/ build (push) Successful in 2m23s
2026-04-28 20:03:49 +00:00
lichenblankie
acc58c341d Switch to host mode for Docker access 2026-04-28 19:58:47 +00:00
lichenblankie
020b0e5792 Fix workflow: install Docker in container
Some checks failed
/ build (push) Failing after 2m0s
2026-04-28 19:42:19 +00:00
lichenblankie
fa8e585b73 Fix workflow: install jq for release upload
Some checks failed
/ build (push) Failing after 1m38s
2026-04-28 19:36:54 +00:00
lichenblankie
421b60bbf0 Fix workflow: use --break-system-packages for pip
Some checks failed
/ build (push) Failing after 1m35s
2026-04-28 19:33:38 +00:00
970135a39d Fix workflow: use apt-get for Python instead of setup-python action
Some checks failed
/ build (push) Failing after 13s
2026-04-28 07:45:03 +00:00
Derick Phan
44a16dea98
Add pytest test suite
Some checks failed
/ build (push) Failing after 5s
174 tests covering URL normalization, FTS5 query sanitization, SSRF/CSRF
guards, sharing-mode logic, DB schema and upsert paths, handler
end-to-end flows, and gateway body-size / mesh-whitelist guards. Each
recent bug-fix commit (6ffd38d, 1bc695f, 8dffd8c) has an explicit
regression test in test_regressions.py. One xfail documents a minor
latent bug in clean_url where port 80 is not stripped from upgraded
https URLs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 15:03:29 -07:00
Derick Phan
8dffd8ccea
Add data-loss guards and first-run empty state
- Bulk delete now routes through a server-rendered confirmation page
  listing the selected titles; a `confirmed=1` form field is required
  before pages are actually deleted. Mirrors the single-delete flow.
- Reset-template button gains a JS confirm() so stray clicks don't wipe
  the custom template.
- Homepage shows a short, neutral empty-state block when the index has
  zero pages and no query — just names what tinyweb is and links to
  /add, /style, and /subscriptions as equal options.
- /about gains a "your data" section explaining what lives in
  ~/.tinyweb/ (identity file, index.db), what losing each costs, and
  how /export differs from a full backup.
- README gains a "Backups" subsection mirroring the /about copy.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 09:38:07 -07:00
Derick Phan
1bc695f508
Harden network and privacy defaults; fix several bugs
Security:
- Bind HTTP gateway to 127.0.0.1 by default; add --bind for LAN opt-in
- Restrict Reticulum mesh surface to GET /api/sites only (CSRF cannot
  authenticate mesh callers, so gate by whitelist)
- Cap request body size at 16 MiB to prevent memory DoS
- Redact /bookmark query strings from request logs so the bookmark token
  and URLs do not land in stdout / docker / journal logs
- Tighten FTS5 sanitizer: strip colon, drop AND/OR/NOT/NEAR operator words
- Expand .dockerignore; document trust model in README

Features:
- Add sharing mode toggle (share everything except private vs share only
  public-tagged) with /share/preview so users can see what subscribers
  would receive before enabling sharing

Bugs:
- handle_export() crashed on every call (missing query kwarg)
- Dead float16 decompression branch in embeddings.py silently corrupted
  the HNSW index when compress_embeddings was on
- GATEWAY_PORT staleness: --port and find_available_port had no effect
  on the actual bind
- semantic_search default mismatched between db.py ("1") and the rest of
  the app ("0"), causing embeddings to be generated when the UI said off
- Connection pool returned connections with uncommitted transactions to
  the next consumer
- Gateway POST body decode 502'd on non-UTF-8 input
- ensure_rns_config clobbered user-edited ~/.reticulum/config; now only
  rewrites files it authored (sentinel-tagged)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 15:37:45 -07:00
Derick Phan
ce50150363
Add LoRa support with background sync and settings UI
- Progressive retry in rns_client.py: fast timeout (15s) then slow (60s+)
  for LoRa/multi-hop links, with automatic fallback
- Background sync threads so subscriptions page returns immediately
  with syncing/error status indicators per subscription
- LoRa RNode configuration in settings page with serial port and
  expandable advanced radio settings (frequency, bandwidth, etc.)
- Internet transport now toggleable alongside LoRa — users can
  enable one, the other, or both
- Reticulum config auto-generated from settings on startup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-22 08:47:09 -07:00
lichenblankie
6ffd38d58c Fixed edge case domains 2026-04-18 22:52:24 +00:00
lichenblankie
254cf562c3 Add private tag clarification
All checks were successful
/ build (push) Successful in 2m16s
2026-04-12 02:39:02 +00:00
lichenblankie
f50bac65ad Add public/private sites
All checks were successful
/ build (push) Successful in 2m18s
2026-04-12 02:31:34 +00:00
lichenblankie
533cf96dce Updated default
All checks were successful
/ build (push) Successful in 2m18s
2026-04-11 22:13:01 +00:00
lichenblankie
8ecb963be4 Optimized storage and updated readme
All checks were successful
/ build (push) Successful in 2m19s
2026-04-11 21:59:55 +00:00
lichenblankie
552311b730 Add Docker setup instructions 2026-04-11 07:20:52 +00:00
lichenblankie
26b5d899ae Fixed workflow build
All checks were successful
/ build (push) Successful in 3m23s
2026-04-11 07:12:26 +00:00
lichenblankie
0b9227648b Fixed workflow build
Some checks failed
/ build (push) Failing after 2m15s
2026-04-11 07:08:41 +00:00
lichenblankie
68d706c2d6 Fixed workflow build
Some checks failed
/ build (push) Failing after 2m11s
2026-04-11 07:04:31 +00:00
lichenblankie
bb51ed1e39 Fixed workflow build
Some checks failed
/ build (push) Failing after 1m59s
2026-04-11 07:00:32 +00:00
lichenblankie
7078e2aa13 Fixed workflow build
Some checks failed
/ build (push) Failing after 2m16s
2026-04-11 05:57:40 +00:00
lichenblankie
5473680998 Fixed workflow build
Some checks failed
/ build (push) Failing after 5s
2026-04-11 05:55:47 +00:00
lichenblankie
a32840c309 Fixed workflow build
All checks were successful
/ build (push) Successful in 1m58s
2026-04-11 05:11:06 +00:00
lichenblankie
6ad3ac8743 Fixed workflow build
All checks were successful
/ build (push) Successful in 2m3s
2026-04-11 05:07:24 +00:00
lichenblankie
cb1175a5d1 Fixed workflow build
Some checks failed
/ build (push) Failing after 2m5s
2026-04-11 05:02:14 +00:00
lichenblankie
d454c0994c Fixed workflow build
Some checks failed
/ build (push) Failing after 1m57s
2026-04-11 04:45:50 +00:00
lichenblankie
6347dce86c Fixed workflow build
All checks were successful
/ build (push) Successful in 1m56s
2026-04-11 04:39:40 +00:00
lichenblankie
b4c358238d Fixed workflow build
All checks were successful
/ build (push) Successful in 1m54s
2026-04-11 04:33:53 +00:00
lichenblankie
c8b9364f32 Fixed workflow build
Some checks failed
/ build (push) Failing after 1m54s
2026-04-11 04:29:04 +00:00
lichenblankie
ac088cc291 Fixed workflow build
Some checks failed
/ build (push) Failing after 2m7s
2026-04-11 04:23:48 +00:00
lichenblankie
27edc9f279 Fixed workflow build
All checks were successful
/ build (push) Successful in 1m55s
2026-04-11 04:15:02 +00:00
lichenblankie
d5061eade9 Fixed workflow build
Some checks failed
/ build (push) Failing after 1m57s
2026-04-11 04:09:17 +00:00
lichenblankie
d1114233d2 Fixed workflow build
Some checks failed
/ build (push) Failing after 1m55s
2026-04-11 03:57:45 +00:00
lichenblankie
24f89c46f6 Fixed workflow build
Some checks failed
/ build (push) Successful in 2m16s
/ release (push) Failing after 5s
2026-04-11 03:52:03 +00:00
lichenblankie
976300461f Fixed workflow build
Some checks failed
/ build (push) Failing after 2m50s
/ release (push) Has been skipped
2026-04-11 03:42:21 +00:00
lichenblankie
c045c8709c Fixed workflow build
Some checks are pending
/ build (push) Waiting to run
/ release (push) Blocked by required conditions
2026-04-11 03:40:09 +00:00