1000 Commits

Author SHA1 Message Date
ayangweb
b7f4bd4f57 fix(chat): confirm before leaving active deep research (#1080) v0.11.0 2026-06-23 14:19:28 +08:00
Hardy
d1ab0560f4 chore: update release notes for publish 0.11.0-2788 (#1079)
Co-authored-by: github-actions <github-actions@github.com>
2026-06-23 14:16:48 +08:00
SteveLauC
13a0a2ebc1 fix: default hide_before_open to true only for Command extensions (#1078)
* fix: default hide_before_open to true only for Command extensions

* style: format code
2026-06-23 10:52:00 +08:00
ayangweb
e6c48a2269 fix: fix deep research cancel state (#1076)
* fix deep research cancel state

* fix: append integration id to web urls
2026-06-18 18:58:43 +08:00
ayangweb
4df541f7ce fix: resolve fst-no-std version conflict causing pizza-engine CI check failure (#1074)
* feat: add deep research report workflow and viewer

* docs: update  changelog

* ci: update pizza repository reference from infinilabs to pizza-rs org

* fix deep research completion state

* fix: prevent deep research stream timeout

* fix: update deep research cancel copy

* fix: apply rustfmt formatting to attachment.rs

* fix: resolve fst-no-std version conflict in pizza-engine CI check

The 'check (macos-latest)' CI job fails because pizza-engine (added as a
CI dependency) uses infinilabs/fst-no-std while its transitive dependency
fst-regex uses pizza-rs/fst-no-std. Cargo treats these as two separate
crates, causing:

1. Automaton trait incompatibility between the two fst_no_std instances
2. MapBuilder, Error::Io, and Set::from_iter not found because the
   infinilabs fork gates them behind 'std' feature while pizza-engine
   only enabled 'alloc'

Fix:
- Add [patch."https://github.com/infinilabs/fst-no-std"] to
  src-tauri/Cargo.toml to redirect the infinilabs fork to
  pizza-rs/fst-no-std, unifying both into a single crate instance.
  This patch is a no-op for normal builds without pizza-engine.
- Update the CI workflow to also add fst-no-std with std feature so that
  Error::Io (gated by std) and MapBuilder are available after the redirect.

* Update Cargo.toml

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Medcl <m@medcl.net>
2026-06-18 17:11:51 +08:00
ayangweb
539ac5f1e1 fix: fix quick ai continue chat shortcut (#1072)
* fix: fix quick ai continue chat shortcut

* docs: update changelog
2026-06-18 10:20:54 +08:00
yaojp123
6f81adafd7 refactor: optimize call tools UI (#1073)
* refactor: optimize call tools UI

* chore: update release notes

* chore: update i18n

---------

Co-authored-by: yaojiping <yaojiping@infini.ltd>
2026-06-18 10:20:38 +08:00
ayangweb
e8e0d7e452 fix(camera): fix device switching not working properly (#1071)
* fix(camera): fix device switching not working properly

* docs: update changelog
2026-05-22 14:26:49 +08:00
ayangweb
4cdf1f5eb1 feat: add macOS entitlements and configuration files for app distribution (#1070) 2026-05-22 14:26:19 +08:00
ayangweb
b3bb773e65 chore: update repository reference and pnpm version in release workflow (#1068) 2026-05-20 15:46:58 +08:00
Copilot
71a51f6644 fix: hide coco window immediately on command click, don't wait for execution (#1060)
* fix: hide coco window immediately when command is clicked instead of waiting for execution

Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/ae6ee959-b1c8-4572-97e6-7e296df4c2e4

Co-authored-by: medcl <64487+medcl@users.noreply.github.com>

* fix: improve error message with context about what failed to open

Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/ae6ee959-b1c8-4572-97e6-7e296df4c2e4

Co-authored-by: medcl <64487+medcl@users.noreply.github.com>

* refactor: return invoke and OpenURLWithBrowser directly instead of separate return

Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/da71fbd8-a50a-4d8e-a9a4-812b6f7ef7a6

Co-authored-by: ayangweb <75017711+ayangweb@users.noreply.github.com>

* refactor: use platformAdapter.error for logging in openSearchItem catch block

Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/988a7dd9-ec9c-44c5-9029-248702d81d05

Co-authored-by: ayangweb <75017711+ayangweb@users.noreply.github.com>

* fix: default hide_before_open to true in Rust, revert TypeScript changes

Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/6566765b-a0bf-4746-8265-a8cdd68c8478

Co-authored-by: SteveLauC <96880612+SteveLauC@users.noreply.github.com>

* chore: remove package-lock.json added by npm install

Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/0a03f1be-945d-4cbd-b0a6-0417cbd65205

Co-authored-by: SteveLauC <96880612+SteveLauC@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: medcl <64487+medcl@users.noreply.github.com>
Co-authored-by: ayangweb <75017711+ayangweb@users.noreply.github.com>
Co-authored-by: SteveLauC <96880612+SteveLauC@users.noreply.github.com>
2026-05-13 09:16:57 +08:00
Copilot
65c0531492 feat: add Open Camera window for webcam preview, photo capture, and mirror toggle (#1064)
* feat: add Open Camera feature with live preview, photo capture, mirror toggle, and camera switching

Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/e874b626-f179-4d54-bc6c-c239394459e3

Co-authored-by: medcl <64487+medcl@users.noreply.github.com>

* fix: address code review feedback - add error logging, remove invisible button, document eslint-disable

Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/e874b626-f179-4d54-bc6c-c239394459e3

Co-authored-by: medcl <64487+medcl@users.noreply.github.com>

* refactor: convert camera from dedicated window to built-in extension with permission handling

- Create Open Camera built-in extension (search source in Rust)
- Add camera permission check/request via macOS permissions plugin
- Render camera inline in main Coco window (not a separate window)
- Add com.apple.security.device.camera entitlement
- Remove dedicated camera window, tray menu entry, and window commands
- Add cameraOpened state to search store for navigation support
- Handle Escape/Back navigation for camera view

Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/bb996add-d287-464c-bc53-c69167630351

Co-authored-by: medcl <64487+medcl@users.noreply.github.com>

* fix: address code review feedback - fix permission check flow, remove duplicate cleanup, fix type

Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/bb996add-d287-464c-bc53-c69167630351

Co-authored-by: medcl <64487+medcl@users.noreply.github.com>

* fix: camera not displaying video due to missing CSP media-src, secure context, and stream lifecycle issues

Three root causes fixed:
1. CSP missing media-src directive - Added media-src with blob: and mediastream:
   schemes to allow camera streams in the webview
2. Missing useHttpsScheme - Added to main window config to ensure secure context
   required by getUserMedia API on macOS WKWebView
3. Camera.tsx stream lifecycle - Rewrote initialization to use a single sequential
   flow (permission → getUserMedia → enumerate → assign) instead of three
   separate useEffects with circular dependency issues. Uses refs for stream
   tracking to prevent stale closure bugs in cleanup.

Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/f3b86e6b-3ce2-423d-a5a1-c3a5f4e115f2

Co-authored-by: medcl <64487+medcl@users.noreply.github.com>

* fix: tighten CSP media-src directive and add permission polling timeout

- Remove overly permissive https:/http: from media-src (only need self/blob/mediastream)
- Remove unnecessary img-src override (falls back to default-src)
- Add 60-second timeout to camera permission polling to prevent infinite loops
- Check cancelled flag during polling to support component unmount

Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/f3b86e6b-3ce2-423d-a5a1-c3a5f4e115f2

Co-authored-by: medcl <64487+medcl@users.noreply.github.com>

* feat: add Open Camera functionality with icon and translations

* fix: remove unused setCameraOpened from SearchResultsPanel

* feat: update platform adapters to include saveFileDialog method for Tauri and Web

* fix: streamline camera search source registration in built-in extension

* refactor: update extension icon

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: medcl <64487+medcl@users.noreply.github.com>
Co-authored-by: ayangweb <473033518@qq.com>
2026-05-13 09:16:32 +08:00
ayangweb
26a7da4633 feat: implement window position saving and restoring across monitors (#1063) 2026-05-07 11:05:32 +08:00
ayangweb
8897c60684 fix: prevent multiple tray instances from being created (#1062)
* fix: prevent multiple tray instances from being created

* docs: update changelog
2026-04-28 11:02:51 +08:00
ayangweb
0d56410711 feat: add keyboard navigation support for PreviewImage component (#1061)
* feat: add keyboard navigation support for PreviewImage component

Co-authored-by: Copilot <copilot@github.com>

* docs: update changelog

---------

Co-authored-by: Copilot <copilot@github.com>
2026-04-24 17:21:23 +08:00
SteveLauC
aa1732413c fix(logging): include webview target in production log level config (#1059)
* fix(logging): include webview target in production log level config

In production mode, COCO_LOG was set to 'coco_lib=trace' which caused
the global log level to be set to Off first, then only coco_lib module
was enabled. This silently dropped all frontend logs whose target is
'webview', making them disappear in packaged builds while working fine
in dev mode (which uses the default Info level for all targets).

Fix by adding 'webview=trace' to the COCO_LOG value so frontend logs
are also captured in the log file when running the packaged app.

* docs: release notes
2026-04-21 11:24:41 +08:00
Medcl
6d68b2b372 docs: update docs settigns (#1058) 2026-04-17 13:20:55 +08:00
ayangweb
e17ec3f7ec feat: enhance tray icon management with logging and error handling (#1056) 2026-04-16 11:30:00 +08:00
ayangweb
ed2ba8dc76 feat: add infinite scroll support for extension store (#1055)
* feat: add infinite scroll support for extension store

* docs: update changelog
2026-04-12 14:28:04 +08:00
ayangweb
47223b76f7 fix: fix input not auto-focus issue on web (#1054)
Co-authored-by: ayangweb <ayangweb@foxmail.com>
2026-04-08 09:43:24 +08:00
Copilot
963567564d feat: support comma thousand separators in calculator expressions (#1052)
* Initial plan

* feat(calculator): support comma thousand separators in number input

Add strip_thousand_separators() function to remove commas between digits
so that expressions like '5,032,104/171' are properly evaluated.
The original query string with commas is preserved for display.

Co-authored-by: medcl <64487+medcl@users.noreply.github.com>
Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/929459f7-054d-4855-bcf5-b1fd68ce0cd3

* style(calculator): fix rustfmt formatting in test assertions

Co-authored-by: medcl <64487+medcl@users.noreply.github.com>
Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/46a6663e-81ef-4c41-a047-d0e1232cc722

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: medcl <64487+medcl@users.noreply.github.com>
2026-03-23 16:18:59 +08:00
BiggerRain
49eae2ff15 style: mobile styles (#1050) 2026-02-26 10:19:26 +08:00
liaosy
bc0f4f39fb docs: apply dracula style to markdown code blocks (#1049)
Co-authored-by: liaosy <liaosy@infinilabs.com>
2026-02-12 08:50:10 +08:00
liaosy
e3b0ef7e56 docs: update the bookCollapseSection: true config in the Getting Started module. (#1048)
Co-authored-by: liaosy <liaosy@infinilabs.com>
2026-01-22 15:00:14 +08:00
BiggerRain
5bbf9ed7b6 refactor: clarify response timeout naming; i18n copy updates (#1047) 2026-01-15 16:40:56 +08:00
ayangweb
9a4b0121b5 fix: resolve extension icon caching issue (#1046)
* fix: resolve extension icon caching issue

* docs: update changelog
2026-01-08 10:09:19 +08:00
liaosy
97eb1edc9b docs: update tableOfContents start level to 2 (#1045)
Co-authored-by: liaosy <liaosy@infinilabs.com>
2026-01-05 17:02:51 +08:00
BiggerRain
b0cdaa3ec8 fix: force check window to center on every show (#1044) 2026-01-05 16:41:14 +08:00
BiggerRain
39096b204e fix: eliminate the default selection delay of the result list (#1043) 2026-01-04 16:46:52 +08:00
BiggerRain
341682aed0 chore: remove deep-link to settings (#1038)
* chore: remove deep-link to settings

* chore: delete comment

* chore: delete comment
2025-12-31 14:14:46 +08:00
BiggerRain
6dfa4f6a5f fix: prevent window collapse when chat history is open (#1039) 2025-12-31 14:13:51 +08:00
ayangweb
d00c07e8ec refactor: remove the pin button in the standalone window (#1041)
* refactor: remove the pin button in the standalone window

* refactor: update
2025-12-31 14:13:22 +08:00
SteveLauC
a6b6a09af0 refactor: format Coco server update time in settings (#1040)
Previously, the last update time of the Coco server in the
"Connect" settings page was displayed using the raw string
directly from the `updated` field, which lacked consistent
formatting.

This commit refactors the `ServiceMetadata` component to use
the `formatDateToLocal` utility function. This ensures
the update time is displayed in a standardized
`YYYY/MM/DD HH:mm:ss` format and provides a fallback value if
the date is invalid or missing.
2025-12-31 14:04:45 +08:00
ayangweb
81a8631411 fix: fix some filter fields not working (#1037)
* fix: fix some filter fields not working

* docs: update changelog
2025-12-30 14:31:08 +08:00
SteveLauC
90e787058c fix: apply local results weight to scores generated by rerank() (#1036)
* fix: apply local results weight to scores generated by rerank()

We have two kinds of scores:

1. Scores calculated by query sources
2. In the post-search phase, we re-score the documents in
   `boosted_levenshtein_rerank()`

When applying the setting "local search results weight", previous
implementation modified the first score. Its effect was not noticeable,
since we collect documents evenly from the hits returned by query sources.

This commit refactors the implementation so that the setting adjusts the
second score, making the effect obvious.

* refactor: keep O(1) lookup && update var names

* chore: one more var name to update
2025-12-30 14:26:01 +08:00
ayangweb
b4856e61e6 fix: fix arrow keys not working after closing the context menu (#1035)
* fix: fix arrow keys not working after closing the context menu

* refactor: update

* docs: update changelog

* refactor: update
2025-12-29 16:39:13 +08:00
ayangweb
f573dfad90 fix: fix incorrect window position after hiding (#1034)
* fix: fix incorrect window position after hiding

* refactor: update

* refactor: update
2025-12-29 16:08:54 +08:00
BiggerRain
b12baf63f8 fix: console error (#1033) 2025-12-26 16:12:16 +08:00
SteveLauC
e019206fcd feat: new config ui.hide_scrollbar (#1031)
* feat: new config ui.hide_scrollbar

* feat: front end supports hide_scrollbar

---------

Co-authored-by: rain9 <15911122312@163.com>
2025-12-26 15:55:04 +08:00
BiggerRain
585545c43c style: adjust placeholder styles (#1032) 2025-12-26 10:55:20 +08:00
BiggerRain
e3e5cd2ecc fix: avoid recentering when resizing to compact after leaving extension (#1030)
* fix: avoid recentering when resizing to compact after leaving ViewExtension

* docs: update release note

* chore: update
2025-12-26 10:53:44 +08:00
SteveLauC
20597b2e86 feat: read localized names from root InfoPlist.strings (#1029)
* feat(mac): read localized names from root InfoPlist.strings

* release notes
2025-12-25 15:35:16 +08:00
ayangweb
913572756c feat: add search filter (#1014)
* feat: add search filter

* refactor: update

* debugging: print query strings

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* update

* update

* update

* style: remove unless file

* update

* update

* pass v2=true to coco server

* print response body string

* pass request body

* chore: up

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* Bucket.label

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* filter

* refactor: update

* fix: source ID filter

* refactor: update

* refactor: update

* fix: source ID filter

* refactor: update

* fix: when field buckets does not exist

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* docs: document supported query strings

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* remove debugging printlns

* move clean_aggregations() to common/search.rs

* fix import

* typo filer->filter

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* refactor: update

* update

* update filter=updated filter=created format

---------

Co-authored-by: Steve Lau <stevelauc@outlook.com>
Co-authored-by: rain9 <15911122312@163.com>
2025-12-25 14:03:59 +08:00
SteveLauC
e5ff39b806 refactor: add a timeout to open() (#1025)
Adds a 500ms timeout to open(), to prevent the open action that hangs
from hanging indefinitely.
2025-12-25 13:23:57 +08:00
SteveLauC
b5afed45e2 feat: support app search even if Spotlight is disabled (#1028)
* feat: support app search even if Spotlight is disabled

Previously, we relied on Spotlight (mdfind) to fetch the app list,
which means it won't work if users disable their Spotlight index.

This commit bumps the applications-rs library, which can now list
apps using `lsregister`, macOS's launch service tool. (See commit [1]
for details). With this, our app search works even tough Spotlight
is disabled.

[1]: ec174b7761

* release notes
2025-12-25 09:02:50 +08:00
SteveLauC
062b4ce410 refactor: display doc.{updated,created} in local time (#1027)
* refactor: display doc.{updated,created} in local time

Previously, document created/updated times were displayed as raw
strings, and can be in UTC, which was not user-friendly.

This commit adds a helper function `formatDateToLocal()` that formats
date to a local time string, then uses it to unify the date formatting
in application and document details.

* chore: address review comments
2025-12-24 16:23:12 +08:00
BiggerRain
03af1d46c5 fix: skip window resize when UI size is missing (#1023)
* fix: skip window resize when UI size is missing

* chore: padding

* chore: update

* refactor: update

* chore: height

* chore: height

* chore: defalut value

---------

Co-authored-by: ayang <473033518@qq.com>
2025-12-23 22:02:19 +08:00
SteveLauC
8638724e68 chore: remove file foo (#1026)
It was a placeholder that I added in PR #1009, I forgot to remove it
before merging that PR. Let's remove it now.
2025-12-22 16:12:14 +08:00
ayangweb
6ae2ed0832 fix: esc key fails to close the popover (#1024)
* fix: esc key fails to close the popover

* refactor: update
2025-12-22 11:51:04 +08:00
Hardy
81dab997a9 chore: update release notes for publish 0.10.0-2619 (#1021)
* chore: update release notes for publish 0.10.0-2619

* Add section headers to release notes

Added section headers for breaking changes, features, bug fixes, and improvements.

---------

Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: BiggerRain <15911122312@163.COM>
2025-12-22 09:51:59 +08:00