Commit Graph
689 Commits
Author SHA1 Message Date
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
OpenClaw Sub-agent 1c4948b965 feat: add /ask/ quick-question page — mobile one-tap send to Discord via webhook 2026-07-31 22:22:14 +10:00
github-actions[bot] a5486eaaa5 chore: update manifest image to 1.0.383 [skip ci] 2026-07-31 01:54:54 +00:00
junv 9cefe20a26 Update dropdown style 2026-07-31 11:51:05 +10:00