161 Commits
Author SHA1 Message Date
tianma-if c25fdf68e5 refactor(ai)!: require client-direct model calls across all platforms 2026-10-20 01:13:40 +08:00
Dariusz Korytoandtianma-if df22f55d1c feat(docker): report image build metadata in System information (#602)
Docker instances reported most deployment fields as unknown. Report how
and when the container image was built, separately from how the
instance was deployed:

- Dockerfile: optional EDGE_EVER_BUILD_CREATED_AT, EDGE_EVER_BUILD_TRIGGER
  and EDGE_EVER_BUILD_METHOD build args, empty by default.
- /api/health (self-hosted-bun only): optional buildCreatedAt and
  buildProvenance. deploymentVersionCreatedAt and deployment keep their
  meaning and stay runtime-supplied; Cloudflare responses are unchanged.
- docker-image.yml: official images record the build time and their
  provenance. Draft-release builds dispatched with release_tag are
  github_release, main pushes main_push, other dispatches manual.
  The container test checks the health response for a metadata build
  with runtime overrides and for a default self-build; the post-publish
  audit checks the published image.
- Add an explicit `docker` deployment method. It is never inferred from
  the runtime, and the registry source still comes only from
  EDGE_EVER_CONTAINER_IMAGE.
- Web/desktop show "Image built at" and "Image build source" for Docker;
  Android shows "Image built at". Older clients ignore the new fields.
- Document the build args and runtime variables in both Docker guides.

Co-authored-by: tianma-if <yingwaizhiying@gmail.com>
2026-10-18 11:43:41 +08:00
Dariusz Koryto bec688b91a ci: add oxlint correctness check and resolve its findings (#592)
* refactor: resolve oxlint correctness findings without behavior changes

- Snapshot iterations that mutate their collection with Array.from()
  instead of a spread (live childNodes, self-removing disposers, a Set
  extended inside its own loop).
- Drop empty spread fallbacks, redundant regex escapes, Boolean() casts
  inside negations, a rethrow-only try/catch and statement ternaries.
- Use startsWith/endsWith for anchored literal checks in the extension.
- List U+FE0F explicitly in the mobile attachment emoji class; the
  matched set is unchanged.
- Fix the WeChat copy fixture, where \oint in a template literal lost its
  backslash and the block formula never exercised \oint.
- Document the intentional control-character regexes (filename
  sanitizing and input validation), the throwing provider stream test,
  Astro's generated type reference and the mobile auto-sync finally
  block with narrow inline exceptions.

* ci: run oxlint correctness rules on pull requests

Pin oxlint 1.88.0 and enable only its correctness category across apps/
and packages/, excluding build output, vendored code and the iOS app.
Findings are errors and the script passes --deny-warnings, so CI fails
on any finding. no-unused-vars stays off until unused code is removed
in a dedicated pass.
2026-10-16 21:57:36 +08:00
tianma-if 3eaad71509 fix(desktop): await ACP process closure before workspace cleanup
Track close separately from exit, preserve probe outcomes on cleanup errors, and cover inherited pipes and Windows cwd locks. Add cross-platform CI with the official Codex ACP process chain smoke check.

Refs #523
2026-10-15 22:19:48 +08:00
Dariusz Koryto 04fddc7017 ci: run regression tests, type checks and the web build on pull requests (#569)
The full non-E2E suite (`bun run test`) only ran inside the release
workflow, and pull requests only built the Docker image, so a failing test
or type error surfaced at release time. A new Test workflow runs on every
pull request and push to main (Markdown and docs-only changes excluded):

- "Type check and build": `bun run typecheck`, `bun run typecheck:mobile`
  and `bun run build:web`;
- "Regression tests": `bun run test` (bulk and integration suites).

It uses the Bun version pinned in package.json, retries `bun install` like
the other workflows, cancels superseded runs, reads the repository only,
and is limited to this repository so deployment forks spend no runners.
2026-10-15 09:22:54 +08:00
Dariusz Koryto 4dfa1546d7 ci(mobile): retry bun install in mobile build workflow (#564)
Mirror the desktop-build retry loop so a transient tarball download
failure no longer fails the whole Android build.
2026-10-15 00:12:28 +08:00
Dariusz Koryto 6f50d1a80a ci: retry bun install across remaining workflows (#565)
Mirror the retry loop already used in desktop-build.yml for every remaining one-shot 'bun install --frozen-lockfile' step so transient registry or network failures (e.g. a failed mermaid tarball download) no longer fail the whole run. deploy-tools.yml gains shell: bash because its matrix includes windows-latest; sync-edgeever-upstream.yml uses break on success so the following verification commands still run.
2026-10-14 23:59:50 +08:00
tianma-if 36f081ea09 fix: reuse isolated store dependency caches for unchanged locks 2026-10-13 21:38:39 +08:00
tianma-if 5b2e69eab3 fix: allow slow dependency downloads during Google Play delivery 2026-10-13 19:59:59 +08:00
tianma-if 588a23553b fix(extension): verify review source archives before store submission 2026-10-12 23:51:05 +08:00
tianma-if 67c78b370d ci: submit web clipper asynchronously after stable releases 2026-10-12 11:33:10 +08:00
tianma-if 66b40b0ee0 docs: redirect GitHub Sponsor button to docs/sponsor.md 2026-10-05 11:53:44 +08:00
tianma-if 3923c62ebf fix(ios): safely cancel review with mismatched build 2026-10-02 20:03:22 +08:00
LuoQianhong a820b5e2b4 feat(notebooks): add toggle to hide notes from sub-notebooks
Refs #157
2026-10-02 01:08:04 +08:00
tianma-if c58fe81a13 feat(extension): add a manual Web Clipper store submission workflow
Chrome and Firefox uploads were done by hand. Submit Web Clipper now packages the extension and sends it for review without joining the product release.
2026-10-02 00:29:10 +08:00
tianma-if cfda827516 docs: write GitHub issue forms in English
GitHub forms have no locale switch, so the chooser and published headings use one language.
2026-10-01 22:15:37 +08:00
tianma-if ae6ae99eeb feat: integrate structured GitHub issue forms and prefilled feedback URLs 2026-09-30 17:49:20 +08:00
tianma-if ed7692b8bd fix(release): download published audit files by release id
gh release download can see no assets after a draft is published, so the
Linux and Android publication audits fail and the Release returns to Draft.
Download those audit files through the release API URL.
2026-09-23 17:46:47 +08:00
tianma-if 201f2c1887 fix(release): read published release assets by id
gh release view --json assets stays empty after a draft is published, so the
desktop and Android audits treat a complete release as missing and Android
returns it to Draft. Read asset names from the release API URL instead.
2026-09-23 17:41:42 +08:00
tianma-if 9f09fc1042 fix(ios): require Japanese App Store What's New before review
The 1.79.0 listing includes ja, so Fastlane rejected submit_review when
release-summary.json had no Japanese notes. Fail in store-delivery and
Fastfile instead of creating a stuck draft.
2026-09-21 00:11:41 +08:00
tianma-if fabfede7e0 fix(ios): stop xcodegen from archiving the previous App Store version
Cloud #50 exported 1.74.0 because project.yml hardcoded MARKETING_VERSION
and ci_post_clone regenerated the Xcode project from that YAML. Keep the
version in Version.xcconfig and stamp it into the pbxproj before archive.
2026-09-20 23:57:33 +08:00
tianma-if ac142b2af5 fix(release): print Xcode Cloud action issues when a run fails
Cloud archive #50 failed without an issue summary. Dump action issues and
any attached App Store Connect builds so the next retry can be diagnosed.
2026-09-20 22:42:31 +08:00
tianma-if a597673472 fix(release): accept Xcode Cloud builds whose iOS tree matches the tag
Manual Archive workflows build the default branch, which can move after the
Release commit. Compare apps/ios and packages/shared instead of requiring
an exact SHA.
2026-09-20 22:36:15 +08:00
tianma-if fdf7ebd953 fix(release): start Xcode Cloud from the Manual workflow default
Manual Archive workflows reject tags that are not in the start condition.
Require the Release commit SHA instead of starting on the Git tag.
2026-09-20 22:34:02 +08:00
tianma-if 6173721c14 feat(release): start Xcode Cloud and submit iOS App Review automatically
Formal releases with iOS runtime changes now bump MARKETING_VERSION, archive the tag via Xcode Cloud, wait until App Store Connect marks the build Valid, and submit App Review. GitHub publication stays independent of iOS outcome.
2026-09-20 21:40:12 +08:00
tianma-if d75e593363 chore(ios): prepare App Store v1.74.0
Reserve Xcode Cloud build 49 for the 1.74.0 App Store submission so iOS
can ship the shared editor schema, math/gallery/divider alignment, and
in-app Japanese.
2026-09-16 10:25:23 +08:00
tianma-if 99e9c2820c refactor: share editor schema and drop RN iOS builds
Editors now take document TipTap nodes from a shared factory. Workspace and editor helpers move out of the large panes. Store iOS no longer builds from Expo EAS.
2026-09-15 12:56:44 +08:00
tianma-if 0f8b97a192 fix(web): drop install-time PWA app-shell precache
Keep the web manifest and runtime caches so the app stays installable. Stop precaching JS/CSS/HTML at install time so adding locales or editor code cannot block desktop releases.
2026-09-14 19:26:33 +08:00
tianma-if 54edca629a chore(ios): prepare App Store v1.70.0
Reserve Xcode Cloud build 48 for the 1.70.0 App Store submission so iOS
can catch up with the GitHub release and ship the Japanese listing.
2026-09-14 10:57:00 +08:00
tianma-if 7b5134be8c chore(ios): prepare App Store v1.67.0
Reserve Xcode Cloud build 47 for the 1.67.0 App Store submission so iOS can ship on-device AI streaming.
2026-09-11 22:48:16 +08:00
tianma-if 9f0df716ca fix(ios): retry transient App Store Connect errors in Xcode Cloud monitor 2026-09-11 01:28:33 +08:00
tianma-if 5235e5e03e fix(ios): refresh App Store Connect JWT while monitoring Xcode Cloud 2026-09-11 00:55:29 +08:00
tianma-if c9392c2909 chore(ios): prepare App Store v1.65.0 2026-09-11 00:30:21 +08:00
tianma-if dc7c00e538 fix(docker): keep the historical self-hosted entry path
NAS/GUI upgrades often reuse the v1.62 command
`bun scripts/self-hosted-server.mjs`. Keep that path as an alias of the
bundled runtime so those containers start after v1.63.

Fixes #381
2026-09-10 15:42:09 +08:00
tianma-if 86a6ddc04b fix(release): check out Linux audit verifier 2026-09-09 16:04:45 +08:00
tianma-if 27e1c10824 fix(release): scope AppImage dependency to Linux 2026-09-09 15:47:09 +08:00
tianma-if 9a6cfe316d fix(release): install AppImage runtime dependency 2026-09-09 15:41:23 +08:00
tianma-if 930d2d7e36 feat(desktop): enable Linux AppImage updates 2026-09-09 13:32:10 +08:00
tianma-if 3bb025963f perf(docker): ship bundled production runtime 2026-09-09 12:56:42 +08:00
tianma-if b82719abdb test desktop private protocol file flows 2026-09-09 11:19:12 +08:00
tianma-if 9f17063c94 fix(desktop): replace file renderer origin 2026-09-09 10:18:49 +08:00
tianma-if 26ee127e90 feat(desktop): add Linux AppImage preview 2026-09-08 12:34:02 +08:00
tianma-if 98fd9a55fe chore: add GitHub funding configuration for Afdian 2026-09-07 20:31:03 +08:00
tianma-if 38662d8d6e fix(ios): synchronize App Store version sources 2026-09-06 22:32:25 +08:00
tianma-if 2717756a58 chore(ios): retry App Store build 44 2026-09-06 22:25:02 +08:00
tianma-if 7c03acb417 chore(ios): preserve failed Xcode Cloud logs 2026-09-06 22:24:00 +08:00
tianma-if 94bec098ed chore(ios): report Xcode Cloud build issues 2026-09-06 22:22:56 +08:00
tianma-if accb6e3808 chore(ios): prepare App Store v1.60.0 2026-09-06 22:15:51 +08:00
tianma-if 2bac88b110 fix(release): wait for App Store build processing 2026-09-06 21:51:18 +08:00
tianma-if 7febcb8c22 fix(release): use Fastlane precheck environment key 2026-09-06 21:49:05 +08:00