Commit graph

258 commits

Author SHA1 Message Date
DESKTOP-RTLN3BA\$punk
fb382d6e1b fix(sandbox): bump fast-uri, js-yaml and undici in remotion lockfile
Lockfile-only update of three transitive dependencies of the Remotion
render sandbox (docker/sandbox/remotion). All new versions sit inside the
ranges their parents already declare, so package.json is unchanged and no
overrides are needed.

fast-uri 3.1.5 -> 3.1.8 (via webpack > schema-utils > ajv)
- GHSA-hrr3-gc8f-f4qj, GHSA-qw65-cvwx-89v3, GHSA-5jgf-p345-68v8,
  GHSA-f65p-4m7j-42xc, GHSA-fph4-wmhf-6fwf, GHSA-jqff-g426-hqxp

js-yaml 4.3.1 -> 4.3.2 (via @svgr/core > cosmiconfig)
- GHSA-2883-xcg3-v3hh

undici 6.28.0 -> 6.28.1 (via markmap-lib > cheerio)
- GHSA-r53p-7pc4-xj5r, GHSA-rfgv-xxqx-mfg5, GHSA-3wwx-pv8p-q78v

undici is held at 6.28.1 rather than 6.29.0, which was published less
than seven days ago. Regenerated with npm 11 so the existing libc and
peer metadata in the lockfile is kept; lockfileVersion stays 3.

Nothing deferred.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 23:23:01 -07:00
Claude
cc8edf87b6
fix(license): refuse trial emails on the disposable-email-domains list
The trial check refused 20 hand-picked domains by exact match, so trial
spam walked around it with any other throwaway provider, any subdomain
of a listed one, or a punycode spelling.

Refuse the community disposable-email-domains list (~9.2k domains, CC0),
installed as its official PyPI package and pinned in uv.lock, plus the
three hand-picked domains it lacks. Match every parent domain short of
the TLD, as upstream requires, and look up the punycode form, since
EmailStr hands the route Unicode. Purchases and resends are unaffected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KrM98FAv8YT3boAVJpf6PW
2026-09-30 23:10:24 +00:00
DESKTOP-RTLN3BA\$punk
a7d797d2c1 chore: point code comments at the moved docs
Comments, docstrings and .env.example notes that cited moved or
deleted plan files now cite their new homes under docs/.

The three llama.cpp checksums in fetch-llamacpp.mjs and a URL-format
example in the backend config are marked `pragma: allowlist secret`.
Touching those files puts them in front of detect-secrets, and both
are false positives.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 21:27:27 -07:00
CREDO23
6295c53120 chore: merge main into dev before the release PR
Some checks are pending
Build and Push Docker Images / build (./surfsense_backend, cu128, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, -cuda, production, true, cuda) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cu128, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, -cuda, production, true, cuda) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_web, cpu, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64, , runner, false, cpu) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_web, cpu, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64, , runner, false, cpu) (push) Blocked by required conditions
Build and Push Docker Images / compute_version (push) Waiting to run
Build and Push Docker Images / build (./docker/sandbox, cpu, ./docker/sandbox/Dockerfile, sandbox, surfsense-sandbox, ubuntu-24.04-arm, linux/arm64, arm64, , false, cpu) (push) Blocked by required conditions
Build and Push Docker Images / build (./docker/sandbox, cpu, ./docker/sandbox/Dockerfile, sandbox, surfsense-sandbox, ubuntu-latest, linux/amd64, amd64, , false, cpu) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cpu, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, , production, false, cpu) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cpu, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, , production, false, cpu) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cu126, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, -cuda126, production, true, cuda126) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cu126, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, -cuda126, production, true, cuda126) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (backend, surfsense-backend, -cuda126, cuda126) (push) Blocked by required conditions
Build and Push Docker Images / verify_digests (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (backend, surfsense-backend, , cpu) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (backend, surfsense-backend, -cuda, cuda) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (sandbox, surfsense-sandbox, , cpu) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (web, surfsense-web, , cpu) (push) Blocked by required conditions
Build and Push Docker Images / finalize_release (push) Blocked by required conditions
2026-09-18 09:12:52 +02:00
CREDO23
35c83caa82 chore: drop leftover skills, plans, and unused docker extras
Clear the SEO skill dump and shipped-phase plans so they can be rebuilt later. Leave Azure compose (SearxNG, sandbox, zero-cache) and license/export contracts untouched.
2026-09-18 08:51:33 +02:00
DESKTOP-RTLN3BA\$punk
49149ece1d feat(local): more pre release tweaks 2026-09-17 21:19:21 -07:00
CREDO23
c58b4296ac Merge branch 'pr-1777' into sunset-fixes
# Conflicts:
#	surfsense_local/frontend/src/components/ui/icons.tsx
#	surfsense_local/frontend/src/features/updates/update-settings.test.tsx
#	surfsense_local/frontend/src/features/updates/update-settings.tsx
#	surfsense_web/lib/auth-utils.ts
2026-09-17 07:06:57 +02:00
CREDO23
e2c277573f feat(license): send the app download link with the licence, and run trials for 30 days
A trial is handed to an email address, not to an installation, so the email now opens with an install link built from NEXT_FRONTEND_URL. Deployments without a portal keep the original steps rather than printing a dead link.

Trial length moves to 30 days so the week before the first plugin ships does not eat half of it. The number is read from LICENSE_TRIAL_DAYS everywhere, including the subject line and the pricing copy, which previously hardcoded 14.
2026-09-17 04:50:27 +02:00
Thierry CH.
01585d0de1 fix(keygen-ce): print the policy ids check.py just created
policies is {name: id}, so joining it yielded the names -- which the caller
already knew -- and dropped the ids, which are what KEYGEN_POLICY_* has to be
set to. Recovering them meant minting a second admin token and querying, and
the script's own warning is that re-running creates duplicate policies.
2026-09-15 23:40:40 +02:00
Thierry CH.
a5bf46a029 fix(keygen): probe health on 127.0.0.1, not localhost
localhost resolves to ::1 inside the container while Puma binds 0.0.0.0, so every healthcheck got connection refused regardless of Keygen's state.
2026-09-15 18:56:49 +02:00
Thierry CH.
0154b8b024 feat(keygen): pin Keygen CE web and worker images for Coolify
Coolify has no field for a container command, so the worker needs a Dockerfile to set CMD. The web file keeps both processes pinned to the same tag in one place.
2026-09-15 18:42:28 +02:00
Thierry CH.
f4a90b1f56 feat(keygen): pin Keygen CE web and worker images for Coolify
Coolify has no field for a container command, so the worker needs a Dockerfile to set CMD. The web file keeps both processes pinned to the same tag in one place.
2026-09-15 17:55:05 +02:00
DESKTOP-RTLN3BA\$punk
e65cb8a718 refactor(local): update licensing and Keygen integration details in documentation
- Revised the license file format to reflect the use of self-hosted Keygen CE.
- Clarified the configuration requirements for Keygen integration.
- Updated portal documentation to specify the handling of license routes and delivery processes.
- Added notes on the implications of self-hosting Keygen, including testing and contract management.
2026-09-14 18:07:53 -07:00
Anish Sarkar
1333c263b3 feat(sunset): refuse writes and redirect the app when SUNSET_MODE is on 2026-09-14 23:54:27 +05:30
Anish Sarkar
57a32f506b test(mail): cover the real SMTP path against Mailpit, fix trial's 500 on Keygen failure 2026-09-14 01:05:32 +05:30
Anish Sarkar
cf5d658468 refactor(mail): make the SMTP connection deployment-wide, drop the console transport 2026-09-14 00:51:51 +05:30
Anish Sarkar
e0eb3b0c2f chore(config): add Keygen, license mail and rate limit settings
LICENSE_MAIL_TRANSPORT selects how mail leaves the process (null, console, smtp), never which vendor delivers it: every provider exposes SMTP, so changing company means editing the connection strings and leaving this alone.
2026-09-14 00:07:57 +05:30
Anish Sarkar
3adf478720 Merge remote-tracking branch 'upstream/dev' into feat/workstream-b 2026-09-13 11:43:54 +05:30
thierry
b64f28635c revert: cloud pricing and no-login chat retirement 2026-09-12 21:03:52 +02:00
Anish Sarkar
b65004f99f feat(license): implement license purchase and issuance system 2026-09-12 11:54:00 +05:30
MODSetter
a507fe45f7 feat: changed pricing and retired no login chat 2026-09-06 22:09:08 +05:30
Anish Sarkar
117d4bdba4 refactor(infographics): clarify revision process and infographic style handling 2026-09-03 18:53:38 +05:30
Anish Sarkar
c40674d35b refactor(infographics): enhance prompt assembly and clarify content requirements 2026-09-03 18:23:44 +05:30
Anish Sarkar
19b4ea644c fix(infographics): update audience constraints terminology in SKILL.md 2026-09-03 17:15:03 +05:30
Anish Sarkar
d6f0fad263 fix(infographics): clarify audience specification in layout guidelines 2026-09-03 17:14:23 +05:30
Anish Sarkar
e28aa450e0 feat(infographics): add deliverables workflow 2026-09-03 16:49:26 +05:30
Anish Sarkar
35486d452b feat(agents): teach deliverables to create quizzes 2026-09-02 23:15:31 +05:30
Anish Sarkar
fbc1426052 refactor(flashcards): update card structure to use plain text and LaTeX, enforce minimum card count, and enhance validation logic 2026-09-02 04:06:49 +05:30
Anish Sarkar
27de5f9996 feat(agents): teach deliverables agent flashcards 2026-09-02 00:42:13 +05:30
Anish Sarkar
f9b6d0855c refactor(artifacts): require explicit verification formats 2026-09-01 03:02:47 +05:30
Anish Sarkar
24f9539f8f feat(remotion): implement MindmapPng component for PNG export of mind maps 2026-08-31 22:33:29 +05:30
Anish Sarkar
81b321e6d2 feat(sandbox): add mind-map rendering workflow 2026-08-31 22:28:50 +05:30
Anish Sarkar
2b019ba99f feat(remotion): add mind-map still composition 2026-08-31 22:28:50 +05:30
Anish Sarkar
4198418a20 feat(sandbox): add HTML artifact authoring skill 2026-08-31 18:44:07 +05:30
Anish Sarkar
634f0ef991 feat(sandbox): share design guidance across artifact skills 2026-08-31 18:43:53 +05:30
CREDO23
ebbea423ee Merge upstream/dev into observability refactor
Reconcile the observability module refactor (god-files split into
core/signals/setup/domains) with 86 upstream commits that kept evolving the
now-deleted otel.py / metrics.py / bootstrap.py.

Ported upstream's net-new telemetry into the new layout instead of dropping it:
- drift-sweep + per-workspace drift-check spans and git-remote
  connect/push/sweep spans + counters -> domains/knowledge_store
- video render/admission/segment/verify metrics -> domains/media
- OTEL_EXPORTER_OTLP_LOGS_ENDPOINT added to core.config.is_configured
  (log export itself already lived in setup/providers)

Re-swept upstream call-sites that referenced the deleted modules onto domain
imports (remote facade + push task, deliverables sandbox, artifact
verification, drift monitor) and updated the two upstream tests that patched
the old module attributes. Deleted otel.py/metrics.py/bootstrap.py and the
stale test_otel.py.

Verified: 4688 tests collect with zero import errors; observability, sandbox,
artifacts, and knowledge-store-remote unit suites pass. The drift-monitor
integration test needs a live Postgres and is unaffected by this merge.
2026-08-29 17:09:16 +02:00
Anish Sarkar
8180b36a0b Reapply "feat: Git remote exports, Google SERP parsing fixes, & testing video sandbox" 2026-08-29 19:51:37 +05:30
Anish Sarkar
dc2a75f8b9
Revert "feat: Git remote exports, Google SERP parsing fixes, & testing video sandbox" 2026-08-29 19:43:00 +05:30
Anish Sarkar
0c0925ea7e Merge main into dev 2026-08-29 19:07:56 +05:30
CREDO23
770ec76c66 refactor(observability): retire the PostHog $ai callback in favor of gen_ai OTLP
Drop build_llm_callback_handler from the chat orchestrators and anonymous
route, delete POSTHOG_AI_PRIVACY_MODE, and default LANGSMITH_TRACING off
(dev-only). The anonymous tier gains OtelSpanMiddleware so its LLM calls still
emit gen_ai.* to LGTM. PostHog now carries product analytics only.
2026-08-26 21:23:20 +02:00
CREDO23
95c8389fce chore(observability): point OTLP examples at otel-lgtm
The collector hostname and Grafana Cloud keys are gone. Set the endpoint to enable export.
2026-08-24 22:49:04 +02:00
CREDO23
cd361207fa chore(docker): run local LGTM on the same image pin
Stop pulling latest so local and prod do not drift.
2026-08-24 22:49:04 +02:00
CREDO23
35fee7c749 feat(docker): pin grafana/otel-lgtm as the OTLP sink
One container is Grafana plus Loki, Tempo, and Prometheus. Apps export OTLP to 4317.
2026-08-24 22:49:04 +02:00
CREDO23
0e584c1455 chore(docker): remove the unused collector service stub
Prod compose never ran it. Keep the stack on the app services only.
2026-08-24 22:49:04 +02:00
CREDO23
41efd187fc chore(observability): drop the Grafana Cloud collector config
Self-host sends OTLP straight at LGTM. This file only shipped traces to grafana.net.
2026-08-24 22:48:45 +02:00
Anish Sarkar
2c61067275
Merge pull request #1712 from AnishSarkar22/feat/video-generation-sandbox
feat(video-generation): add queued sandbox-native video generation
2026-08-24 14:57:54 +05:30
Anish Sarkar
807878042e build(celery): run videos on the shared worker 2026-08-24 14:28:26 +05:30
Anish Sarkar
1d5db1105f feat(video): configure rendering limits and metrics 2026-08-24 14:27:39 +05:30
Anish Sarkar
d11fd13de1 feat(remotion): add sandbox video rendering harness 2026-08-24 14:27:34 +05:30
Yigtwxx
5a70103b33 chore(e2e): allowlist the compose file's fake credentials for detect-secrets
Touching docker-compose.e2e.yml at all makes the Security Scan hook read the
whole file, and .secrets.baseline is empty, so ten lines of obviously fake
values fail the gate: a container-local postgres DSN, the e2e-deny-real-call
sentinels, and secrets whose own values say "not-for-production".

Mark them inline rather than regenerating the baseline, which is the
maintainer's call. Verified with the pinned detect-secrets v1.5.0 against the
repo baseline: clean.
2026-08-21 20:23:17 +03:00