Commit Graph
692 Commits
Author SHA1 Message Date
github-actions[bot] 87deeb8f24 chore: update manifest image to 1.0.412 [skip ci] 2026-08-03 06:26:31 +00:00
OpenClaw Sub-agent 030e0dc5af fix: backfill via presigned URL instead of direct boto3 API
Direct boto3 calls against the R2 S3 endpoint fail with
SignatureDoesNotMatch for this account, while presigned URLs served
through the R2 custom domain are the path the app already uses. Switch
migrate_image_storage download step to urlopen on the presigned URL.
2026-08-03 16:22:14 +10:00
github-actions[bot] ba58e0a64b chore: update manifest image to 1.0.411 [skip ci] 2026-08-03 06:12:45 +00:00
OpenClaw Sub-agent 366cc35ff5 feat: unify image storage onto files backend + Apple-style collections UI
- Image model: new file OneToOneField → FileUpload; get_url/get_thumbnail_url
  serve via /ui/files/ (Pillow thumbs) with legacy R2 fallback until backfill
- upload_images API now persists through _save_uploaded_file (files backend);
  deletes clean up FileUpload disk+record; collection destroy cascades files
- R2Storage.delete_file implemented (was silently missing → legacy R2 delete no-op)
- manage.py migrate_image_storage: idempotent R2→files backfill (dry-run default,
  --commit, optional --delete-r2); nothing removed from R2 without explicit flag
- Collections list: Apple design system, cover cards, hover actions, mobile-first
- Collection detail: native drag&drop upload (CDN Dropzone removed), lightbox with
  keyboard/swipe nav + description edit + delete, valid JSON image data via json_script
- Slideshow untouched (automatically uses new backend)
- tests: 10 new (upload/delete/URLs/backfill), 148 total green
2026-08-03 16:08:34 +10:00
github-actions[bot] 84ec8c2c24 chore: update manifest image to 1.0.410 [skip ci] 2026-08-03 04:41:26 +00:00
OpenClaw Sub-agent e45f4a5ed5 feat: 微信读书式阅读体验 — 主题/字体/字号/行距调节 + 阅读进度条
- Aa 阅读工具栏:5 种字体(系统/宋体/黑体/楷体/等宽)、字号 13-24px、三档行距、4 种主题(明亮/纸感/护眼绿/夜间),localStorage 持久化
- 正文阅读宽度收敛至 46rem(~736px),行高 1.85,符合长文阅读最佳实践
- 顶部阅读进度条 + 返回顶部按钮
- markdown.css 全量 CSS 变量化:表格/代码/引用/标题随主题联动,夜间模式自动适配
- 主题切换平滑过渡 + 面板弹出动画 + 页面淡入
- 移动端右下角 Aa FAB(与 TOC 按钮错开),面板全宽适配 390px
2026-08-03 14:37:06 +10:00
github-actions[bot] fa3265d848 chore: update manifest image to 1.0.409 [skip ci] 2026-08-02 12:49:43 +00:00
OpenClaw Sub-agent eeb8a4ae4e fix: add missing space between link-field/action-field class and hidden toggle
Template rendered 'action-fieldhidden' / 'link-fieldhidden' (no space) when
the hidden modifier applied, so:
- Tailwind .hidden class never applied -> Discord action card visible on
  the new-link page's default Link tab
- JS querySelectorAll('.action-field') failed to match -> could not hide it

Root cause: '{% if %}...{% endif %}' directly appended to the class name
in link_form.html line 212. Verified via Playwright: new Link tab hides
action card, Action tab shows it, edit pages hide the wrong fields.
2026-08-02 22:45:11 +10:00
github-actions[bot] 5b67254142 chore: update manifest image to 1.0.408 [skip ci] 2026-08-02 11:39:47 +00:00
OpenClaw Sub-agent 69f399dfe0 fix: prevent horizontal page scroll on post detail page
- markdown.css: .prose table gets display:block + overflow-x:auto so
  wide tables scroll inside their own box instead of stretching the page
  (post 2970 had a 1076px table overflowing 390px mobile and 1440px desktop)
- td gets word-break:break-word + overflow-wrap:anywhere for long URLs
- post_detail.html: .post-actions max-width:100% so Listen/Edit/Share/Delete
  buttons wrap inside the container on narrow screens
2026-08-02 21:35:19 +10:00
github-actions[bot] 14902c5c66 chore: update manifest image to 1.0.407 [skip ci] 2026-08-02 08:29:52 +00:00
OpenClaw Sub-agent 5dfb09efff refactor: merge Template back into Link type (per user decision)
- Revert TEMPLATE as separate LinkType; templates are plain links whose
  URL contains {param} placeholders
- migration 0055: data-migrate any TEMPLATE links back to LINK, roll back
  choices (0054 stays in history)
- link_form: back to 3 tabs (Link/Custom/Action); Link tab owns the URL
  field plus a dashed '🔧 Add template parameters' toggle; the Sketch
  builder auto-shows when the URL contains { } (and stays visible after a
  manual toggle); hidden on Custom/Action tabs
- badges (row/detail/search) detect templates by URL content again;
  detail page shows Original URL for plain links
- views/forms: drop is_template plumbing and TEMPLATE validation
2026-08-02 18:22:45 +10:00
github-actions[bot] f756ab83e1 chore: update manifest image to 1.0.406 [skip ci] 2026-08-02 07:52:35 +00:00
OpenClaw Sub-agent 539303b8f6 feat(link form): TEMPLATE becomes its own type with dedicated tab/fields
- models: LinkType gains TEMPLATE (migration 0054, choices only)
- link_form: 4 tabs — Link / 🔧 Template / Custom /  Action; each type
  shows only its own fields: Template tab owns the Sketch builder, Link tab
  is a plain URL, Custom owns the markdown editor, Action owns the Discord
  card + message template; per-type descriptions; tab colors blue/purple/
  green/purple
- Editing a legacy LINK with {param} in URL auto-switches to Template tab
  (and saving migrates it to TEMPLATE type)
- badges (row/detail/search cards) recognize TEMPLATE type; detail page
  shows Original URL for TEMPLATE too
- forms: TEMPLATE requires original_url
2026-08-02 17:48:32 +10:00
github-actions[bot] ce0b83cd4d chore: update manifest image to 1.0.405 [skip ci] 2026-08-02 07:32:52 +00:00
OpenClaw Sub-agent 54a416c63c feat(template links): Sketch-style visual parameter builder
- link_form: template builder under the URL field — preset param chips
  (q/id/page/category/keyword/lang, CN labels) click to insert ?q={q} with
  smart ?/& separators; auto-parsed parameter rows (name + default input +
  remove); custom params (name + default -> append); live dark preview
  filling defaults (green) and flagging required (red); chips grey out
  when used; hidden on Custom/Action tabs; edits existing templates
- redirect_to_original: map GET query params (?q=weather) by name into
  template placeholders, keep path-param backward compat (go/alias/x
  fills every unfilled param), defaults otherwise; query wins over path
- tests: +5 template redirect cases (query map, multi-param, defaults,
  path compat, query-over-path)
2026-08-02 17:28:32 +10:00
github-actions[bot] 131154e183 chore: update manifest image to 1.0.403 [skip ci] 2026-08-02 01:40:00 +00:00
OpenClaw Sub-agent 540733699e fix(home): restore tbody binding, sticky mobile delete bar, 20-row recent-first list
- Fix Uncaught ReferenceError: tbody is not defined — the client-side filter
  rewrite dropped the const tbody declaration still used by load-more
- Mobile: Delete Selected becomes a sticky frosted bottom bar (safe-area
  aware); disabled (grayed) until a row is selected, then red
- Mobile: library search input full-width 48px (primary interaction)
- Default list: 20 rows (was 50) sorted by updated_at desc (recent first)
  instead of click_count; load-more keeps paging +20
2026-08-02 11:35:51 +10:00
github-actions[bot] f3bf4089f6 chore: update manifest image to 1.0.402 [skip ci] 2026-08-02 01:24:30 +00:00
OpenClaw Sub-agent 595b99446b feat: ⌘K command palette + restore green nav (fixes mobile menu collapse)
- Command palette (Ctrl/Cmd+K or nav search icon): /search/palette/ groups
  links/pages/posts with jump/detail/edit actions, keyboard navigation
- Hero: stats inline under search pill, ⌘K chip on desktop, Random Images
  broken-image fallback to elegant SVG placeholder (layout untouched)
- Restore original green nav (bg-custom-blue). The frosted-glass nav from
  1.0.401 broke the mobile Menu dropdown: backdrop-filter creates a
  containing block, collapsing the fixed full-screen dropdown to 3px
- Palette tests: +5 cases (grouping, post match, management fields,
  empty query, no results)
2026-08-02 11:20:11 +10:00
github-actions[bot] ce25637b43 chore: update manifest image to 1.0.401 [skip ci] 2026-08-02 01:02:57 +00:00
OpenClaw Sub-agent dda47ee62e feat(home): search-driven link library with mobile card layout
- /search/aliases/ now matches alias/url/description/text/tags and returns
  id, link_type, detail_url, edit_url, click_count for management actions
- Library filter upgraded from client-side row filtering to live search
  cards: click card -> detail page, inline edit/delete, alias jumps
- Mobile: table rows render as cards (kills 620px horizontal scroll),
  hidden cells stay hidden, no viewport overflow
- Hero search no longer autofocuses on touch devices (no keyboard pop);
  desktop keeps autofocus via hover:fine media query
- Nav bar unified to light frosted-glass (was dark green) across all pages
- Fix hero-glow decorative overflow on mobile
- Add tests/test_search_aliases.py (8 cases)
2026-08-02 10:58:44 +10:00
github-actions[bot] 74557b4c64 chore: update manifest image to 1.0.400 [skip ci] 2026-08-01 22:36:57 +00:00
OpenClaw Sub-agent 509723c197 fix(invest): mobile chart — fixed height, sane scales, horizontal x labels, compact legend/points, Chinese help
Root cause of the squashed chart: canvas had a fixed height=90 attr and no container, so on narrow viewports Chart.js compressed everything — legend overlapped the plot, x labels tilted 45deg, y ticks degenerated (-1000% scale). Fix: relative h-72/h-80 container + maintainAspectRatio:false, grace 5%, maxTicksLimit, maxRotation:0, smaller points (r2/1.5), compact legend/tooltip, Chinese help text.
2026-08-02 08:28:08 +10:00
github-actions[bot] 24435c58df chore: update manifest image to 1.0.399 [skip ci] 2026-08-01 22:13:58 +00:00
OpenClaw Sub-agent b67a834def feat(invest): cost basis & P&L, AUD totals, chart ranges, per-ticker page, manual entry, tx search
P1:
- WAC cost basis per (portfolio, ticker): avg_cost / unrealized P&L / P&L%
  - transaction price when recorded, else trade-date market close (estimated, flagged)
  - dashboard: Unrealized P&L card + Avg Cost & P&L columns on holdings tables
  - fx: frankfurter.dev rates (USD/HKD->AUD, 24h cache, UA header required) -> AUD total on Total Value card
  - chart: 1M/3M/6M/YTD/1Y/ALL period buttons (all periods precomputed server-side, top-level payload stays YTD for compat)
P2:
- /invest/stocks/<ticker>/ per-ticker page: cross-account holdings, WAC, P&L, weight, theme, trade history
- manual transaction + cashflow entry forms (source=MANUAL, confidence=1.0)
- dashboard transaction search (?q= ticker/account) + add-transaction buttons
- tickers link to detail page; tabular-nums on all figures
- 8 new tests (WAC sell, estimated price, incomplete, per-portfolio agg, stock page, forms, search)
2026-08-02 08:09:58 +10:00
github-actions[bot] 911015e2f6 chore: update manifest image to 1.0.398 [skip ci] 2026-08-01 21:50:35 +00: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
github-actions[bot] 70973a063b chore: update manifest image to 1.0.397 [skip ci] 2026-08-01 13:27:16 +00:00
OpenClaw Sub-agent 8cd92812f7 feat: server-side thumbnails (Pillow/ffmpeg), 3D cover-flow carousel, fix preview close on iOS
- New /ui/files/{pk}/thumb/ endpoint: Pillow resize for images, ffmpeg first-frame for videos, disk-cached with per-record lock
- Grid & carousel render server thumbnails via <img> — fixes blank video thumbs on iOS Safari
- Carousel upgraded to 3D cover-flow: perspective rotateY/scale/opacity driven by scroll position
- Preview <video> gets playsinline + webkit-playsinline — fixes close button unusable after iOS fullscreen playback
- thumbnail_url exposed in serializer, upload response, and client JSON
- 3 new tests: thumb 200/cache, non-media 404, missing-file 404
2026-08-01 23:22:57 +10:00
github-actions[bot] 301224ed18 chore: update manifest image to 1.0.396 [skip ci] 2026-08-01 12:05:02 +00:00
OpenClaw Sub-agent ed4c8853a6 feat: Files page layout switcher — grid (Finder-style) & carousel (cover-flow) views
- Three layouts: list (unchanged) / grid / carousel, persisted in localStorage
- Grid: image thumbnails (lazy), video first-frame + play badge, doc icon fallback
- Carousel: scroll-snap horizontal track, desktop arrows, native swipe on mobile
- Click any card opens the existing preview modal (with prev/next navigation)
- Mobile-first: 2-column grid on phones, hidden carousel arrows on touch
- Pure frontend in list.html; no model/API changes
2026-08-01 22:00:37 +10:00
github-actions[bot] 7f10a90f10 chore: update manifest image to 1.0.395 [skip ci] 2026-08-01 11:41:23 +00:00
OpenClaw Sub-agent 815a5e3543 style: simplify action description to one-line Chinese hint 2026-08-01 21:37:03 +10:00
github-actions[bot] 2004dee25e chore: update manifest image to 1.0.394 [skip ci] 2026-08-01 11:31:49 +00:00
OpenClaw Sub-agent 3e1dd31bab fix: hide template description on Action tab, Discord-style message preview
- template-description box was shown on Action tab (JS never controlled it)
- Message preview now renders as a Discord-style chat bubble (avatar, author,
  dark background) with {query} highlighted as a chip
2026-08-01 21:27:19 +10:00
github-actions[bot] e2c76bd341 chore: update manifest image to 1.0.393 [skip ci] 2026-08-01 11:20:21 +00:00
OpenClaw Sub-agent c4a4b7a299 feat: Apple-style action link edit UI — hide JSON, card picker, live preview
- Hide action_config JSON field from the form (internal storage, not user-editable)
- Replace Action dropdown with an Apple-style radio card (💬 发消息到 Discord)
- Rename Message template → 消息内容 with plain-language help text
- Add live message preview that highlights {query} as a chip
- Tests: edit page renders card + Chinese labels, no JSON exposed (109 passed)
2026-08-01 21:16:00 +10:00
github-actions[bot] aa6a1a25fd chore: update manifest image to 1.0.392 [skip ci] 2026-08-01 11:02:23 +00:00
OpenClaw Sub-agent c7ba6e6fd3 fix: show Action badge for ACTION links in detail and list views
link_detail.html and _link_row.html only handled Template/LINK types,
so ACTION links fell through to the Custom badge. Add badge-action
branch + CSS so go/link/235/ (alias=ask) displays Action, matching the
Action tab in the link form.
2026-08-01 20:58:07 +10:00
github-actions[bot] 74d72b28a0 chore: update manifest image to 1.0.390 [skip ci] 2026-08-01 10:47:46 +00:00
OpenClaw Sub-agent b559cf6cba fix: migration must update existing ask LINK record (backup old chatgpt link)
Prod had an old ask link (LINK → chatgpt.com, id=235). get_or_create
would leave it as LINK, so go/ask/问题 would redirect to chatgpt instead
of sending to Discord. Switch to update_or_create and back up the old
chatgpt link to alias ask-chatgpt.
2026-08-01 20:47:08 +10:00
OpenClaw Sub-agent f2f8192fba refactor: make Ask a regular ACTION link instead of fixed route
Remove hardcoded /ask/ routes (core/urls.py), /api/ask/ (api_urls.py),
ask_views.py, and ask.html input page. Ask is now a normal Link record
(alias='ask', link_type=ACTION) created by data migration 0053, so it
behaves exactly like other action links: go/ask/问题 → catch-all →
execute_action → 302 to Discord, editable/deletable in the Links UI.

Tests updated: ask covered as ACTION link (redirect/dedup/empty-query).
2026-08-01 20:43:29 +10:00
github-actions[bot] 50b5c8ef9c chore: update manifest image to 1.0.388 [skip ci] 2026-07-31 13:42:05 +00:00
OpenClaw Sub-agent 7d89e91319 feat: action links send+redirect to Discord, no result page; 10-min dedup window 2026-07-31 23:37:36 +10:00
github-actions[bot] 56b391109f chore: update manifest image to 1.0.387 [skip ci] 2026-07-31 13:01:31 +00:00
OpenClaw Sub-agent 1c18f2b177 feat: add Action link type — configurable send-to-Discord links with UI form 2026-07-31 22:56:06 +10:00
github-actions[bot] c91112aed9 chore: update manifest image to 1.0.386 [skip ci] 2026-07-31 12:38:37 +00:00
OpenClaw Sub-agent 6be143d565 fix: use https universal link for open-discord button (discord:// dead on desktop) 2026-07-31 22:34:20 +10:00
github-actions[bot] 8b425d5485 chore: update manifest image to 1.0.385 [skip ci] 2026-07-31 12:27:24 +00:00