33 Commits
Author SHA1 Message Date
OpenClaw Sub-agent 124ba0dbe5 fix: stop iOS Safari heuristic-caching stale UI pages
User reported 'still broken' on /ui/tags/ai/ right after the 20-card cap
shipped — the deployed HTML was correct (verified in-pod: 20 cards + View
all 363 posts) but Safari was serving a heuristically cached copy of the
previous template. UI HTML responses had no Cache-Control at all.

- core/middleware.NoCacheUiPagesMiddleware: /ui/* HTML → Cache-Control:
  no-cache, no-store, must-revalidate (+ Pragma/Expires). API untouched.
- tag_detail: defensive width:100% + box-sizing on .tags-page/.apple-card
2026-08-03 19:24:28 +10:00
OpenClaw Sub-agent 5252222674 feat(invest): P0 dashboard polish — intcomma amounts, ticker-aggregated risk table, unified mobile grid, tx source badges, drop dead invest/base.html
- Add django.contrib.humanize; apply intcomma to every currency amount across invest templates (dashboard, portfolio detail, transactions)
- get_risk_summary now aggregates top_positions by ticker (MRVL across MOMO+IBKR merges into one row with Accounts column), keeping Top 1/3/5 cards and table on the same basis
- Mobile: metric cards all 2-col (2x2 + 2+1 with Last Snapshot spanning full width), no more 1-col break
- Transactions show source badges: purple 🤖 AI (source ai/ocr), grey 手动, amber ⚠ 低置信 when confidence < 0.9
- Delete unused invest/base.html (dead nav; page extends GoLinks base.html)
- tailwind.config.js: add invest/jbot/routermon template dirs so their classes are scanned (text-[10px] etc. were silently missing)
2026-08-02 07:45:21 +10:00
junv c1ea59d23c Update UI 2026-07-19 22:03:33 +10:00
OpenClaw Sub-agent f7a3d228c1 feat: add cashflow-adjusted invest dashboard 2026-06-14 08:19:44 +10:00
junvandCopilot a87b4643fd feat: port JBOT AI robot face into links as Django app
- Add jbot Django app (jbot/__init__.py, apps.py, urls.py, api_urls.py)
- Python backend (jbot/views.py): TTS 2.0, ASR 1.0 BigASR, LLM/memory via OpenRouter
- React SPA frontend at /jbot/ (static_src/jbot/): RobotFace, ChatPanel, expressions,
  voices, push-to-talk, history, memory, settings pages
- Vite entry jbot: static_src/jbot/main.jsx → dist/jbot.js + dist/jbot.css
- react-router-dom added; BrowserRouter basename=/jbot for SPA routing
- core/settings.py: added jbot to INSTALLED_APPS
- core/urls.py: /jbot/ + /api/jbot/ URL includes
- pyproject.toml: websocket-client>=1.9.0 for BigASR binary WS protocol
- Dockerfile: ffmpeg added to production apt-get for WebM→PCM audio conversion
- k8s/manifest.yaml: VOLC_APP_ID, VOLC_ACCESS_TOKEN, OPENROUTER_API_KEY env vars
  via jbot-credentials Secret; LLM_MODEL, VOLC_TTS_VOICE, VOLC_ASR_RESOURCE defaults

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-17 14:13:37 +10:00
junv 1b04d500d1 Add price check 2026-05-11 21:28:59 +10:00
junv f44d76e9ad Rebase 2026-04-18 14:19:51 +10:00
OpenClaw Sub-agent 8d05a11eb6 feat(invest): Add investment portfolio management feature
- Portfolio management (MOMO, IBKR personal, IBKR Yanhua)
- Stock holdings with transaction history (buy/sell)
- Weekly AI report generation
- Real-time price cache via Finnhub API
- Dashboard with tree view and performance charts
- REST API with AI-friendly batch update endpoint
- Management command for scheduled report generation

For大哥's personal investment advisor system.
2026-04-18 11:26:48 +10:00
junvandCopilot 611305b0ab fix(routermon): fix receiver startup, logging config, and JS template escaping
- Remove SO_REUSEADDR from UDP socket so only one gunicorn worker binds
  port 5514 (second worker intentionally gets EADDRINUSE and skips)
- Add print() fallback for bind confirmation/errors so startup is visible
  even when Django logging config is not fully set up
- Fix duplicate LOGGING dict in settings.py: second assignment was
  overriding the first and removing the root logger handler, silently
  swallowing all routermon/core startup logs
- Add sys.stderr fallback in core/apps.py ready() for startup exceptions
- Fix JS SyntaxError: {{ top_domains_json }} needs |safe filter since
  Django auto-escapes quotes to &quot; inside script tags

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-16 14:58:39 +10:00
junv 5b1df2ee5e Add router monitor 2026-04-16 14:01:43 +10:00
junv 7eb002a437 Add nginx visualization 2026-04-01 15:51:20 +11:00
junv 3a20fcb63a Optimize frontend 2026-03-29 11:10:37 +11:00
junv c26c620f78 Add redis caching 2026-03-29 10:23:46 +11:00
copilot-swe-agent[bot]andwahyd4 768ab6c5d8 feat: add build time and version info to Docker image and page footer
Agent-Logs-Url: https://github.com/wahyd4/links/sessions/514d1f3d-d003-4f16-9a54-d221dba306f7

Co-authored-by: wahyd4 <836576+wahyd4@users.noreply.github.com>
2026-03-27 01:12:04 +00:00
junv 8777aabdc9 Update image folder 2026-03-22 14:36:10 +11:00
junv 1ffdb5d2ba Fix static resources issue 2026-03-21 22:49:18 +11:00
junv a8ff146e95 Try to fix css broken issue 2026-03-21 22:39:00 +11:00
junv 45e7289755 Update debug 2026-03-21 21:14:16 +11:00
junv 332654a726 Test files API 2026-03-21 20:45:23 +11:00
junv 7f7a890ad5 Update files function! 2026-03-21 20:30:44 +11:00
junv 551fdf5cbb Add network scan 2026-03-21 16:41:14 +11:00
junv 4d256c2e07 Add craw4ai 2025-11-04 22:22:40 +11:00
junv 41a8726fd3 Update worker to be apscheduler 2025-11-04 20:15:43 +11:00
junv 3e7d300d7f Add image thumnail 2024-11-24 10:31:26 +11:00
junv af3d1f84b3 Update music 2024-11-18 15:06:06 +11:00
junv f299874daa Update playing music logic 2024-11-18 13:56:02 +11:00
junv bbda32887e be able to upload and view images 2024-11-17 12:26:23 +11:00
junv f8abdfee75 first version images 2024-11-17 11:11:08 +11:00
junv fc15d9093c Update default time zone to au 2024-11-09 09:10:51 +11:00
junv 03573880ed Add favicon 2024-11-09 08:48:36 +11:00
junv c5cba262c8 run beats every 2 mins 2024-11-04 23:18:52 +11:00
junv 5eb4047028 Update 2024-11-04 16:39:15 +11:00
junv ea08f337d7 Add logic to display thumbnails 2024-11-04 15:20:18 +11:00