diff --git a/.github/workflows/release-preflight.yml b/.github/workflows/release-preflight.yml index ec0975d..523ad9b 100644 --- a/.github/workflows/release-preflight.yml +++ b/.github/workflows/release-preflight.yml @@ -49,11 +49,11 @@ jobs: with: python-version: "3.13" - name: Install CivicCore release-provenance helper - run: python -m pip install https://github.com/CivicSuite/civiccore/releases/download/v1.2.0/civiccore-1.2.0-py3-none-any.whl + run: python -m pip install https://github.com/townlight/core/releases/download/v1.2.0/civiccore-1.2.0-py3-none-any.whl - name: Checkout canonical CivicCore provenance fixtures uses: actions/checkout@v6 with: - repository: CivicSuite/civiccore + repository: townlight/core ref: v1.2.0 path: .tmp-civiccore - name: Verify adversarial release provenance fixtures diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 451db0e..198f928 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -72,7 +72,7 @@ jobs: run: | TAG="${{ inputs.release_tag }}" VERSION="${TAG#v}" - WHEEL_URL="https://github.com/CivicSuite/civicrecords-ai/releases/download/${TAG}/civicrecords_ai-${VERSION}-py3-none-any.whl" + WHEEL_URL="https://github.com/townlight/sunshine/releases/download/${TAG}/civicrecords_ai-${VERSION}-py3-none-any.whl" echo "Cleanroom wheel URL: ${WHEEL_URL}" python -m venv .cleanroom-venv . .cleanroom-venv/bin/activate @@ -131,12 +131,12 @@ jobs: python-version: "3.13" - name: Install CivicCore release-provenance helper - run: python -m pip install https://github.com/CivicSuite/civiccore/releases/download/v1.2.0/civiccore-1.2.0-py3-none-any.whl + run: python -m pip install https://github.com/townlight/core/releases/download/v1.2.0/civiccore-1.2.0-py3-none-any.whl - name: Checkout canonical CivicCore provenance fixtures uses: actions/checkout@v6 with: - repository: CivicSuite/civiccore + repository: townlight/core ref: v1.2.0 path: .tmp-civiccore @@ -159,7 +159,7 @@ jobs: python-version: "3.13" - name: Install CivicCore release-provenance helper - run: python -m pip install https://github.com/CivicSuite/civiccore/releases/download/v1.2.0/civiccore-1.2.0-py3-none-any.whl + run: python -m pip install https://github.com/townlight/core/releases/download/v1.2.0/civiccore-1.2.0-py3-none-any.whl - name: Synthesize hermetic .env for release verification shell: bash @@ -202,7 +202,7 @@ jobs: - name: Install CivicCore release-provenance helper shell: bash - run: python -m pip install https://github.com/CivicSuite/civiccore/releases/download/v1.2.0/civiccore-1.2.0-py3-none-any.whl + run: python -m pip install https://github.com/townlight/core/releases/download/v1.2.0/civiccore-1.2.0-py3-none-any.whl - name: Install Inno Setup run: choco install innosetup -y diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 0dcdf2e..aa5b378 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -6,7 +6,7 @@ The full text is available at the link above. ## Reporting -Report concerns about contributor conduct via [GitHub private security advisories](https://github.com/CivicSuite/civicrecords-ai/security/advisories/new) or by opening a private discussion with a maintainer. +Report concerns about contributor conduct via [GitHub private security advisories](https://github.com/townlight/sunshine/security/advisories/new) or by opening a private discussion with a maintainer. ## Scope diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3319044..879bd46 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,7 +15,7 @@ Thank you for your interest in contributing to CivicSunshine. This project helps ```bash # Clone the repository -git clone https://github.com/CivicSuite/civicrecords-ai.git +git clone https://github.com/townlight/sunshine.git cd civicrecords-ai # Option A: Use the installer (recommended) diff --git a/README.md b/README.md index c691fea..0029932 100644 --- a/README.md +++ b/README.md @@ -76,14 +76,14 @@ For the CivicSuite starter-set package, run `python scripts/check_starter_set_in **Windows:** ```powershell -git clone https://github.com/CivicSuite/civicrecords-ai.git +git clone https://github.com/townlight/sunshine.git cd civicrecords-ai .\install.ps1 ``` **macOS / Linux** (script path; not lifecycle-certified — see "Supported Platforms" below)**:** ```bash -git clone https://github.com/CivicSuite/civicrecords-ai.git +git clone https://github.com/townlight/sunshine.git cd civicrecords-ai bash install.sh ``` @@ -100,7 +100,7 @@ bash install.sh CivicSunshine backend installs `civiccore` (the shared CivicSuite schema + migration runtime) as a dependency. The current release line is pinned to the published CivicCore v1.2.0 wheel so Records-AI consumes the shared document-ingestion pipeline from a release artifact. Records-specific Celery tasks, scheduler wiring, connector sync, and datasource routes remain local; parsing, chunking, local Ollama embeddings, and pgvector document/chunk writes come from `civiccore.ingest`. Earlier interim branches used a commit archive while CivicCore v1.2.0 was unreleased; v1.7.2 returned to the versioned release-asset dependency pattern, and v1.7.3 adds direct-pip wheel and sdist assets without changing runtime behavior. -Migrations run in two layers: `civiccore` first (creates/updates the 16 shared tables), then this repo's Alembic chain on top. See [ADR-0003](https://github.com/CivicSuite/civicsuite/blob/main/docs/architecture/ADR-0003-civiccore-alembic-baseline-strategy.md) for the full gate contract. +Migrations run in two layers: `civiccore` first (creates/updates the 16 shared tables), then this repo's Alembic chain on top. See [ADR-0003](https://github.com/townlight/townlight/blob/main/docs/architecture/ADR-0003-civiccore-alembic-baseline-strategy.md) for the full gate contract. ### Release provenance diff --git a/README.txt b/README.txt index 4fb6e8e..161b283 100644 --- a/README.txt +++ b/README.txt @@ -76,14 +76,14 @@ For the CivicSuite starter-set package, run `python scripts/check_starter_set_in **Windows:** ```powershell -git clone https://github.com/CivicSuite/civicrecords-ai.git +git clone https://github.com/townlight/sunshine.git cd civicrecords-ai .\install.ps1 ``` **macOS / Linux** (script path; not lifecycle-certified — see "Supported Platforms" below)**:** ```bash -git clone https://github.com/CivicSuite/civicrecords-ai.git +git clone https://github.com/townlight/sunshine.git cd civicrecords-ai bash install.sh ``` @@ -100,7 +100,7 @@ bash install.sh CivicSunshine backend installs `civiccore` (the shared CivicSuite schema + migration runtime) as a dependency. The current release line is pinned to the published CivicCore v1.2.0 wheel so Records-AI consumes the shared document-ingestion pipeline from a release artifact. Records-specific Celery tasks, scheduler wiring, connector sync, and datasource routes remain local; parsing, chunking, local Ollama embeddings, and pgvector document/chunk writes come from `civiccore.ingest`. Earlier interim branches used a commit archive while CivicCore v1.2.0 was unreleased; v1.7.2 returned to the versioned release-asset dependency pattern, and v1.7.3 adds direct-pip wheel and sdist assets without changing runtime behavior. -Migrations run in two layers: `civiccore` first (creates/updates the 16 shared tables), then this repo's Alembic chain on top. See [ADR-0003](https://github.com/CivicSuite/civicsuite/blob/main/docs/architecture/ADR-0003-civiccore-alembic-baseline-strategy.md) for the full gate contract. +Migrations run in two layers: `civiccore` first (creates/updates the 16 shared tables), then this repo's Alembic chain on top. See [ADR-0003](https://github.com/townlight/townlight/blob/main/docs/architecture/ADR-0003-civiccore-alembic-baseline-strategy.md) for the full gate contract. ### Release provenance diff --git a/SECURITY.md b/SECURITY.md index 6123add..78437fc 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -10,7 +10,7 @@ ## Reporting -Report suspected vulnerabilities through [GitHub private security advisories](https://github.com/CivicSuite/civicrecords-ai/security/advisories/new). Do not open public issues for security concerns. +Report suspected vulnerabilities through [GitHub private security advisories](https://github.com/townlight/sunshine/security/advisories/new). Do not open public issues for security concerns. Include a description, reproduction steps, affected version, and operational impact. Maintainer response target: 7 days. diff --git a/SUPPORT.md b/SUPPORT.md index ba7ea95..5e6fc99 100644 --- a/SUPPORT.md +++ b/SUPPORT.md @@ -6,16 +6,16 @@ CivicSunshine is an open-source, locally-hosted FOIA / public-records management | Question type | Where | |---|---| -| Usage / how-to | [GitHub Discussions](https://github.com/CivicSuite/civicrecords-ai/discussions) | -| Bugs and defects | [GitHub Issues](https://github.com/CivicSuite/civicrecords-ai/issues) — use the bug report template | -| Feature requests | [GitHub Issues](https://github.com/CivicSuite/civicrecords-ai/issues) — use the feature request template | -| Documentation gaps | [GitHub Issues](https://github.com/CivicSuite/civicrecords-ai/issues) — use the documentation template | +| Usage / how-to | [GitHub Discussions](https://github.com/townlight/sunshine/discussions) | +| Bugs and defects | [GitHub Issues](https://github.com/townlight/sunshine/issues) — use the bug report template | +| Feature requests | [GitHub Issues](https://github.com/townlight/sunshine/issues) — use the feature request template | +| Documentation gaps | [GitHub Issues](https://github.com/townlight/sunshine/issues) — use the documentation template | | Security reports | See [SECURITY.md](SECURITY.md) — do not open public issues for security concerns | ## Before opening an issue 1. Check the [README](README.md), [USER-MANUAL](USER-MANUAL.md), and [docs/index.html](docs/index.html). -2. Search existing [Issues](https://github.com/CivicSuite/civicrecords-ai/issues?q=is%3Aissue) and [Discussions](https://github.com/CivicSuite/civicrecords-ai/discussions) for the same topic. +2. Search existing [Issues](https://github.com/townlight/sunshine/issues?q=is%3Aissue) and [Discussions](https://github.com/townlight/sunshine/discussions) for the same topic. 3. Confirm you are on the latest release (see [CHANGELOG](CHANGELOG.md)). ## Response expectations diff --git a/USER-MANUAL.md b/USER-MANUAL.md index 7995114..e8d191f 100644 --- a/USER-MANUAL.md +++ b/USER-MANUAL.md @@ -285,18 +285,18 @@ There are two supported install paths. Pick the one that matches your platform a 2. Ensure Docker is running (you should see the Docker icon in your taskbar/menu bar, or `docker info` returns without error). 3. Confirm system requirements: 8+ CPU cores, 32 GB RAM, 50 GB free disk. -**Windows (double-click installer):** Download `CivicSunshine--Setup.exe` from the [GitHub Releases page](https://github.com/CivicSuite/civicrecords-ai/releases) for the tag you want, double-click it, acknowledge the SmartScreen "Unknown publisher" prompt (expected — see above), and follow the installer prompts. On first launch the installer automatically runs the full bootstrap (prereq check → model pull → first-boot seed). +**Windows (double-click installer):** Download `CivicSunshine--Setup.exe` from the [GitHub Releases page](https://github.com/townlight/sunshine/releases) for the tag you want, double-click it, acknowledge the SmartScreen "Unknown publisher" prompt (expected — see above), and follow the installer prompts. On first launch the installer automatically runs the full bootstrap (prereq check → model pull → first-boot seed). **Windows (script path):** ```powershell -git clone https://github.com/CivicSuite/civicrecords-ai.git +git clone https://github.com/townlight/sunshine.git cd civicrecords-ai .\install.ps1 ``` **macOS / Linux** (script path; not lifecycle-certified — see B.1 System Requirements)**:** ```bash -git clone https://github.com/CivicSuite/civicrecords-ai.git +git clone https://github.com/townlight/sunshine.git cd civicrecords-ai bash install.sh ``` diff --git a/USER-MANUAL.txt b/USER-MANUAL.txt index f7c5517..478ef4d 100644 --- a/USER-MANUAL.txt +++ b/USER-MANUAL.txt @@ -285,18 +285,18 @@ There are two supported install paths. Pick the one that matches your platform a 2. Ensure Docker is running (you should see the Docker icon in your taskbar/menu bar, or `docker info` returns without error). 3. Confirm system requirements: 8+ CPU cores, 32 GB RAM, 50 GB free disk. -**Windows (double-click installer):** Download `CivicSunshine--Setup.exe` from the [GitHub Releases page](https://github.com/CivicSuite/civicrecords-ai/releases) for the tag you want, double-click it, acknowledge the SmartScreen "Unknown publisher" prompt (expected — see above), and follow the installer prompts. On first launch the installer automatically runs the full bootstrap (prereq check → model pull → first-boot seed). +**Windows (double-click installer):** Download `CivicSunshine--Setup.exe` from the [GitHub Releases page](https://github.com/townlight/sunshine/releases) for the tag you want, double-click it, acknowledge the SmartScreen "Unknown publisher" prompt (expected — see above), and follow the installer prompts. On first launch the installer automatically runs the full bootstrap (prereq check → model pull → first-boot seed). **Windows (script path):** ```powershell -git clone https://github.com/CivicSuite/civicrecords-ai.git +git clone https://github.com/townlight/sunshine.git cd civicrecords-ai .\install.ps1 ``` **macOS / Linux** (script path; not lifecycle-certified — see B.1 System Requirements)**:** ```bash -git clone https://github.com/CivicSuite/civicrecords-ai.git +git clone https://github.com/townlight/sunshine.git cd civicrecords-ai bash install.sh ``` diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 1431c4c..c379157 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -17,7 +17,7 @@ dependencies = [ "python-jose[cryptography]>=3.5.0", "passlib[bcrypt]>=1.7.4", "celery>=5.6.0", - "civiccore @ https://github.com/CivicSuite/civiccore/releases/download/v1.2.0/civiccore-1.2.0-py3-none-any.whl#sha256=a94ce958e36fb03c8d961e4db4672ce5bcfa25765c57d75886e999cf15703ec7", + "civiccore @ https://github.com/townlight/core/releases/download/v1.2.0/civiccore-1.2.0-py3-none-any.whl#sha256=a94ce958e36fb03c8d961e4db4672ce5bcfa25765c57d75886e999cf15703ec7", "redis>=5.0.0,<8.0.0", "httpx>=0.28.0", "pdfplumber>=0.11.0", diff --git a/backend/scripts/generate_pdf.py b/backend/scripts/generate_pdf.py index 0a7dac6..63ac81e 100644 --- a/backend/scripts/generate_pdf.py +++ b/backend/scripts/generate_pdf.py @@ -1082,7 +1082,7 @@ def build_deployment(s): story.append(HRFlowable(width="100%", thickness=1, color=BLUE, spaceAfter=8)) story.append(Paragraph( "CivicSunshine v1.0.0 · Apache License 2.0 · " - "https://github.com/CivicSuite/civicrecords-ai", + "https://github.com/townlight/sunshine", ParagraphStyle("FootNote", parent=s["Body"], fontSize=9, textColor=GRAY, alignment=TA_CENTER))) diff --git a/docs/UNIFIED-SPEC.md b/docs/UNIFIED-SPEC.md index b37feb0..b7183f4 100644 --- a/docs/UNIFIED-SPEC.md +++ b/docs/UNIFIED-SPEC.md @@ -7,7 +7,7 @@ April 13, 2026 |---|---| | Status | Canonical — verified against repository at commit head | | Supersedes | All prior spec versions (v2.0, v2.2, v3.0, v3.0.1) | -| Repository | github.com/CivicSuite/civicrecords-ai | +| Repository | github.com/townlight/sunshine | | Current release | v1.7.3 (May 24, 2026) - release-asset convention bring-up; no functional change | | Test suite | 640 backend tests collected and passing by Docker audit on 2026-05-15 + 36 frontend Vitest tests passing | | Method | GitHub API crawl of repo structure, README, CHANGELOG, config files, module directories, and in-repo RECONCILIATION doc | @@ -974,7 +974,7 @@ For future documentation, use this precedence order: When those disagree, do not preserve the older narrative claim just because it sounds cleaner. ## Appendix A: Repository Structure -Top-level contents of github.com/CivicSuite/civicrecords-ai (master branch): +Top-level contents of github.com/townlight/sunshine (master branch): backend/ — Python 3.12, FastAPI, SQLAlchemy 2.0, Alembic, Celery frontend/ — React 18, Vite, shadcn/ui, Tailwind CSS, Geist Variable font docs/ — 20+ documentation files including manuals, specs, QA reports, architecture diagrams diff --git a/docs/admin-manual-it.html b/docs/admin-manual-it.html index 8ee01ee..1542d57 100644 --- a/docs/admin-manual-it.html +++ b/docs/admin-manual-it.html @@ -364,17 +364,17 @@

IT Administrator Manual

v1.2.0 — what changed since this manual was authored

- This administrator manual was first written against v1.1.0. The v1.2.0 release (2026-04-23) adds five operator-facing capabilities that are not individually documented in every section below. Where this manual and the CHANGELOG disagree, the CHANGELOG wins. Always treat CHANGELOG.md §[1.2.0] as the authoritative delta. + This administrator manual was first written against v1.1.0. The v1.2.0 release (2026-04-23) adds five operator-facing capabilities that are not individually documented in every section below. Where this manual and the CHANGELOG disagree, the CHANGELOG wins. Always treat CHANGELOG.md §[1.2.0] as the authoritative delta.

    -
  • T6 at-rest encryption for connector credentials (ENG-001 closed). data_sources.connection_config is now stored as a Fernet envelope (AES-128-CBC + HMAC-SHA256). A new required ENCRYPTION_KEY env var drives the encryption; the installer auto-generates a Fernet key on fresh install and prints a loud "BACK IT UP SEPARATELY FROM YOUR DATABASE" banner. Operator section: USER-MANUAL.md §B.3.2. Spec: UNIFIED-SPEC §8.10. Reversible Alembic migration 019_encrypt_connection_config. Losing the key means losing decryption access to every connector's credentials — no recovery path in v1.2.0.
  • +
  • T6 at-rest encryption for connector credentials (ENG-001 closed). data_sources.connection_config is now stored as a Fernet envelope (AES-128-CBC + HMAC-SHA256). A new required ENCRYPTION_KEY env var drives the encryption; the installer auto-generates a Fernet key on fresh install and prints a loud "BACK IT UP SEPARATELY FROM YOUR DATABASE" banner. Operator section: USER-MANUAL.md §B.3.2. Spec: UNIFIED-SPEC §8.10. Reversible Alembic migration 019_encrypt_connection_config. Losing the key means losing decryption access to every connector's credentials — no recovery path in v1.2.0.
  • T5D install-time portal switch. New PORTAL_MODE env var (private default, public opt-in). Private mode is the existing staff-only posture; public mode exposes exactly three surfaces — landing page, resident-registration path, authenticated records-request submission for UserRole.PUBLIC. Nothing else. Operator section: USER-MANUAL.md §B.3.1. Spec: UNIFIED-SPEC §8.9.
  • T5E Windows unsigned double-click installer. Real .exe shipped as a GitHub Release asset (CivicSunshine-1.2.0-Setup.exe + .sha256). Unsigned by design per locked signing posture α — SmartScreen will show "Windows protected your PC — Unknown publisher." Remediation: More info → Run anyway, then confirm UAC. Two-shortcut flow: Start CivicSunshine (daily docker compose up -d) and Install or Repair CivicSunshine (full bootstrap + model pick + pull). macOS/Linux remain on the guided-script path (install.sh).
  • T5C 4-model Gemma 4 installer picker. gemma4:e4b is the default selected model. The fake tags gemma4:12b and gemma4:27b that appeared in earlier hardware-detect scripts have been purged. gemma4:26b / gemma4:31b are still selectable but gated behind an explicit "requires stronger hardware" acknowledgement against the locked 32 GB target profile. The embedding model nomic-embed-text is auto-pulled alongside the selected LLM.
  • T5A/T5B operator surface. T5A makes the single-phase adaptive onboarding interview actually persist each answer and transition onboarding_status through the not_started → in_progress → complete lifecycle. T5B auto-seeds 175 state-scoped exemption rules, 5 compliance templates, and 12 notification templates on first boot via app/main.lifespan; idempotent via skip-if-exists so admin customizations survive re-seeds.

- Test coverage at v1.2.0: 617 backend pytest + 36 frontend vitest, CI-verified (GitHub Actions run 24859606170 on commit cc06abc). See the v1.2.0 release page for the curated release notes. + Test coverage at v1.2.0: 617 backend pytest + 36 frontend vitest, CI-verified (GitHub Actions run 24859606170 on commit cc06abc). See the v1.2.0 release page for the curated release notes.

diff --git a/docs/architecture/decomposition.html b/docs/architecture/decomposition.html index 1ef1244..62618ae 100644 --- a/docs/architecture/decomposition.html +++ b/docs/architecture/decomposition.html @@ -257,7 +257,7 @@

Sub-Project Build Sequence (from master spec sectio
CivicSunshine v1.4.1  ·  Apache License 2.0  ·  - github.com/CivicSuite/civicrecords-ai + github.com/townlight/sunshine
diff --git a/docs/architecture/system-architecture.html b/docs/architecture/system-architecture.html index 0015736..1429a85 100644 --- a/docs/architecture/system-architecture.html +++ b/docs/architecture/system-architecture.html @@ -237,7 +237,7 @@

Docker Compose Services

CivicSunshine v1.4.1  ·  Apache License 2.0  ·  - github.com/CivicSuite/civicrecords-ai + github.com/townlight/sunshine
diff --git a/docs/browser-qa-v1.4.1-summary.md b/docs/browser-qa-v1.4.1-summary.md index ed80f85..e28c9d4 100644 --- a/docs/browser-qa-v1.4.1-summary.md +++ b/docs/browser-qa-v1.4.1-summary.md @@ -13,7 +13,7 @@ Target: `docs/index.html` - Current release badge shows `v1.4.1`. - Linux/macOS install script links point to `https://raw.githubusercontent.com/CivicSuite/civicrecords-ai/v1.4.1/install.sh`. -- Windows installer links point to `https://github.com/CivicSuite/civicrecords-ai/releases/download/v1.4.1/CivicRecordsAI-1.4.1-Setup.exe`. +- Windows installer links point to `https://github.com/townlight/sunshine/releases/download/v1.4.1/CivicRecordsAI-1.4.1-Setup.exe`. - Desktop and mobile screenshots render without obvious clipping or missing primary calls to action. ## Console diff --git a/docs/browser-qa-v1.4.2-summary.md b/docs/browser-qa-v1.4.2-summary.md index f94400e..2ac92de 100644 --- a/docs/browser-qa-v1.4.2-summary.md +++ b/docs/browser-qa-v1.4.2-summary.md @@ -13,7 +13,7 @@ Target: `docs/index.html` - Current release badge shows `v1.4.2`. - Linux/macOS install script links point to `https://raw.githubusercontent.com/CivicSuite/civicrecords-ai/v1.4.2/install.sh`. -- Windows installer links point to `https://github.com/CivicSuite/civicrecords-ai/releases/download/v1.4.2/CivicRecordsAI-1.4.2-Setup.exe`. +- Windows installer links point to `https://github.com/townlight/sunshine/releases/download/v1.4.2/CivicRecordsAI-1.4.2-Setup.exe`. - Desktop and mobile screenshots render without obvious clipping or missing primary calls to action. ## Console diff --git a/docs/civicrecords-ai-manual.html b/docs/civicrecords-ai-manual.html index 76ad707..6ff8165 100644 --- a/docs/civicrecords-ai-manual.html +++ b/docs/civicrecords-ai-manual.html @@ -159,14 +159,14 @@

v1.2.0 — what changed since this manual was authored This unified manual was first written against v1.1.0. Five operator-facing capabilities landed in the v1.2.0 release (2026-04-23) and are not individually documented in every section below. Where this manual and the current CHANGELOG disagree, the CHANGELOG wins.

    -
  • At-rest encryption (ENG-001 closed). Connector credentials stored in data_sources.connection_config are now encrypted at rest via a Fernet envelope. New required ENCRYPTION_KEY env var (installer auto-generates on fresh install; losing the key means losing credential access — there is no recovery path in v1.2.0, so back it up separately from your database). Full operator guide: USER-MANUAL.md §B.3.2.
  • +
  • At-rest encryption (ENG-001 closed). Connector credentials stored in data_sources.connection_config are now encrypted at rest via a Fernet envelope. New required ENCRYPTION_KEY env var (installer auto-generates on fresh install; losing the key means losing credential access — there is no recovery path in v1.2.0, so back it up separately from your database). Full operator guide: USER-MANUAL.md §B.3.2.
  • Install-time portal switch. New PORTAL_MODE env var (private default, public opt-in). Public mode exposes a minimal three-surface public area — landing page, resident-registration, and authenticated records-request submission — and nothing more. No anonymous submission, no published-records search, no resident dashboard. See USER-MANUAL.md §B.3.1.
  • Windows double-click installer (unsigned). A real .exe (CivicSunshine-1.2.0-Setup.exe + .sha256) now ships on every v* tag. Unsigned by design — SmartScreen will warn on first run; click More info → Run anyway. macOS/Linux continue on the guided-script path (install.sh).
  • 4-model Gemma 4 installer picker. Default is gemma4:e4b; the older fake tags gemma4:12b / gemma4:27b have been purged repo-wide; gemma4:26b / gemma4:31b remain selectable but require an explicit "stronger hardware required" acknowledgement against the locked 32 GB baseline.
  • Onboarding persistence + first-boot seeding. The adaptive onboarding interview now persists each answer and transitions onboarding_status; first boot automatically seeds 175 state exemption rules, 5 compliance templates, and 12 notification templates (idempotent skip-if-exists so admin edits survive re-seeds).

- Canonical narrative: the v1.2.0 release page · CHANGELOG §[1.2.0] · UNIFIED-SPEC. + Canonical narrative: the v1.2.0 release page · CHANGELOG §[1.2.0] · UNIFIED-SPEC.

diff --git a/docs/generate-manual-docx.js b/docs/generate-manual-docx.js index 8aba8f4..4783249 100644 --- a/docs/generate-manual-docx.js +++ b/docs/generate-manual-docx.js @@ -527,11 +527,11 @@ const doc = new Document({ // --- 14. Installation --- h2("14. Installation"), h3("Windows"), - codeBlock("git clone https://github.com/CivicSuite/civicrecords-ai.git"), + codeBlock("git clone https://github.com/townlight/sunshine.git"), codeBlock("cd civicrecords-ai"), codeBlock(".\\install.ps1"), h3("Linux / macOS"), - codeBlock("git clone https://github.com/CivicSuite/civicrecords-ai.git"), + codeBlock("git clone https://github.com/townlight/sunshine.git"), codeBlock("cd civicrecords-ai"), codeBlock("bash install.sh"), h3("What the Installer Does"), diff --git a/docs/generate_docx.py b/docs/generate_docx.py index 1a2ceaf..9228455 100644 --- a/docs/generate_docx.py +++ b/docs/generate_docx.py @@ -215,7 +215,7 @@ def add_header_footer(section, header_text, include_page_num=True): fp = footer.add_paragraph() fp.clear() fp.alignment = WD_ALIGN_PARAGRAPH.CENTER - fp.add_run("Apache License 2.0 — github.com/CivicSuite/civicrecords-ai").font.size = Pt(8) + fp.add_run("Apache License 2.0 — github.com/townlight/sunshine").font.size = Pt(8) if include_page_num: fp.add_run(" Page ").font.size = Pt(8) add_page_number(fp) @@ -543,7 +543,7 @@ def build_readme_docx(out_path): h2 = doc.add_heading("Install (Windows)", level=2) apply_h2_style(h2) for line in [ - "git clone https://github.com/CivicSuite/civicrecords-ai.git", + "git clone https://github.com/townlight/sunshine.git", "cd civicrecords-ai", ".\\install.ps1", ]: @@ -552,7 +552,7 @@ def build_readme_docx(out_path): h2 = doc.add_heading("Install (macOS / Linux)", level=2) apply_h2_style(h2) for line in [ - "git clone https://github.com/CivicSuite/civicrecords-ai.git", + "git clone https://github.com/townlight/sunshine.git", "cd civicrecords-ai", "bash install.sh", ]: @@ -702,7 +702,7 @@ def build_readme_docx(out_path): doc.add_paragraph() footer_para = doc.add_paragraph() footer_para.alignment = WD_ALIGN_PARAGRAPH.CENTER - run = footer_para.add_run("github.com/CivicSuite/civicrecords-ai") + run = footer_para.add_run("github.com/townlight/sunshine") run.font.name = "Calibri" run.font.size = Pt(11) run.font.color.rgb = CIVIC_MID diff --git a/docs/generate_pdfs.py b/docs/generate_pdfs.py index 3975473..01e26b5 100644 --- a/docs/generate_pdfs.py +++ b/docs/generate_pdfs.py @@ -226,7 +226,7 @@ def on_page(canvas, doc): canvas.line(margin, 0.55 * inch, w - margin, 0.55 * inch) canvas.setFont("Helvetica", 8) canvas.setFillColor(colors.HexColor("#6b7280")) - canvas.drawString(margin, 0.38 * inch, "Apache License 2.0 — github.com/CivicSuite/civicrecords-ai") + canvas.drawString(margin, 0.38 * inch, "Apache License 2.0 — github.com/townlight/sunshine") canvas.drawRightString(w - margin, 0.38 * inch, "© 2026 CivicSunshine") canvas.restoreState() @@ -746,7 +746,7 @@ def build_readme_full(out_path): styles["center_body"] )) story.append(sp(120)) - story.append(P("github.com/CivicSuite/civicrecords-ai", styles["tagline"])) + story.append(P("github.com/townlight/sunshine", styles["tagline"])) story.append(PageBreak()) @@ -914,14 +914,14 @@ def build_readme_full(out_path): ], styles) story += section_header("Install (Windows)", styles, 2) story += code_block( - "git clone https://github.com/CivicSuite/civicrecords-ai.git\n" + "git clone https://github.com/townlight/sunshine.git\n" "cd civicrecords-ai\n" ".\\install.ps1", styles ) story += section_header("Install (macOS / Linux)", styles, 2) story += code_block( - "git clone https://github.com/CivicSuite/civicrecords-ai.git\n" + "git clone https://github.com/townlight/sunshine.git\n" "cd civicrecords-ai\n" "bash install.sh", styles @@ -1163,7 +1163,7 @@ def build_readme_full(out_path): story.append(sp(8)) story.append(P( "For complete documentation, source code, and issue tracking, see:\n" - "github.com/CivicSuite/civicrecords-ai", + "github.com/townlight/sunshine", styles["center_body"] )) @@ -1261,10 +1261,10 @@ def build_readme_short(out_path): story += section_header("Install", styles, 2) story += code_block( "# Windows\n" - "git clone https://github.com/CivicSuite/civicrecords-ai.git\n" + "git clone https://github.com/townlight/sunshine.git\n" ".\\install.ps1\n\n" "# macOS / Linux\n" - "git clone https://github.com/CivicSuite/civicrecords-ai.git\n" + "git clone https://github.com/townlight/sunshine.git\n" "bash install.sh", styles ) @@ -1316,11 +1316,11 @@ def build_readme_short(out_path): # Links story += section_header("Links & Documentation", styles, 1) links = [ - ("Source Code", "github.com/CivicSuite/civicrecords-ai"), + ("Source Code", "github.com/townlight/sunshine"), ("Full Technical Ref", "README-FULL.pdf (in this repository)"), ("User Manual", "USER-MANUAL.md / USER-MANUAL.pdf"), ("Canonical Spec", "docs/UNIFIED-SPEC.md"), - ("Issue Tracker", "github.com/CivicSuite/civicrecords-ai/issues"), + ("Issue Tracker", "github.com/townlight/sunshine/issues"), ("License", "Apache License 2.0 — see LICENSE"), ("Installation", "install.ps1 (Windows) / install.sh (macOS/Linux)"), ] diff --git a/docs/github-discussions-seed.md b/docs/github-discussions-seed.md index e01e7ad..f3024b1 100644 --- a/docs/github-discussions-seed.md +++ b/docs/github-discussions-seed.md @@ -44,7 +44,7 @@ CivicSunshine is an open-source, locally-hosted AI system built for American cit - **At-rest encryption for connector credentials (Tier 6 / ENG-001)** — `data_sources.connection_config` stored as a Fernet envelope (AES-128-CBC + HMAC-SHA256). Operator requirement: set `ENCRYPTION_KEY` in `.env` before restart (installer auto-generates on fresh installs). - **Install-time portal mode switch (T5D)** — `PORTAL_MODE` env var (`private` default, `public` opt-in). Public mode exposes exactly three surfaces: landing page, resident-registration, and authenticated records-request submission for `UserRole.PUBLIC`. -- **Windows double-click installer (T5E, unsigned by design)** — `CivicSunshine-1.4.0-Setup.exe` + matching `.sha256` on the [v1.4.0 release page](https://github.com/CivicSuite/civicrecords-ai/releases/download/v1.4.0/CivicSunshine-1.4.0-Setup.exe). SmartScreen will show "Windows protected your PC — Unknown publisher" on first run; click **More info → Run anyway**, confirm UAC. macOS/Linux continue on the guided `install.sh` script. +- **Windows double-click installer (T5E, unsigned by design)** — `CivicSunshine-1.4.0-Setup.exe` + matching `.sha256` on the [v1.4.0 release page](https://github.com/townlight/sunshine/releases/download/v1.4.0/CivicSunshine-1.4.0-Setup.exe). SmartScreen will show "Windows protected your PC — Unknown publisher" on first run; click **More info → Run anyway**, confirm UAC. macOS/Linux continue on the guided `install.sh` script. - **4-model Gemma 4 installer picker (T5C)** — default `gemma4:e4b`. `gemma4:26b` / `gemma4:31b` remain selectable but gated behind an explicit "stronger hardware required" acknowledgement against the locked 32 GB baseline. - **First-boot baseline seeding (T5B)** — auto-seeds 175 state-scoped exemption rules across 51 jurisdictions, 5 compliance templates, and 12 notification templates on first boot. - **Onboarding interview persistence (T5A)** — single-phase LLM-powered interview persists each answer onto `CityProfile`. @@ -67,8 +67,8 @@ CivicSunshine is an open-source, locally-hosted AI system built for American cit **Quick links:** - [README](../README.md) — quick start and feature overview - [User Manual](civicrecords-ai-manual.pdf) — staff operations guide + IT reference + architecture -- [Installation](https://github.com/CivicSuite/civicrecords-ai#install) — Windows-only currently; macOS support pending lifecycle certification (macOS and Linux operators may use the `install.sh` script path, which is not lifecycle-certified) -- [v1.4.0 Windows installer](https://github.com/CivicSuite/civicrecords-ai/releases/download/v1.4.0/CivicSunshine-1.4.0-Setup.exe) — direct download +- [Installation](https://github.com/townlight/sunshine#install) — Windows-only currently; macOS support pending lifecycle certification (macOS and Linux operators may use the `install.sh` script path, which is not lifecycle-certified) +- [v1.4.0 Windows installer](https://github.com/townlight/sunshine/releases/download/v1.4.0/CivicSunshine-1.4.0-Setup.exe) — direct download - [CHANGELOG](../CHANGELOG.md) — full history of every release If you're a city clerk, records officer, IT administrator, or civic technologist — we're glad you're here. Ask anything, share what you're working on, and tell us what would make this tool more useful for your city. @@ -94,14 +94,14 @@ If you're a city clerk, records officer, IT administrator, or civic technologist *Windows:* ```powershell -git clone https://github.com/CivicSuite/civicrecords-ai.git +git clone https://github.com/townlight/sunshine.git cd civicrecords-ai .\install.ps1 ``` *Linux / macOS* (script path; not lifecycle-certified — Windows-only currently, macOS support pending lifecycle certification)*:* ```bash -git clone https://github.com/CivicSuite/civicrecords-ai.git +git clone https://github.com/townlight/sunshine.git cd civicrecords-ai bash install.sh ``` diff --git a/docs/index.html b/docs/index.html index e7f1e07..2e0c611 100644 --- a/docs/index.html +++ b/docs/index.html @@ -423,7 +423,7 @@
  • Features
  • Tech Stack
  • Docs
  • -
  • GitHub
  • +
  • GitHub
  • @@ -466,11 +466,11 @@

    CivicRecords AI

    - 🐈 GitHub Repository - ⬇ Download Installer (Linux / macOS) - ⬇ Download Installer (Windows) - 🗎 User Manual - 📄 README + 🐈 GitHub Repository + ⬇ Download Installer (Linux / macOS) + ⬇ Download Installer (Windows) + 🗎 User Manual + 📄 README
    @@ -856,14 +856,14 @@

    Get started

    - 🐈 GitHub Repository CivicSuite/civicrecords-ai - @@ -871,7 +871,7 @@

    Get started

    Download Installer Linux & macOS · install.sh
    - @@ -879,14 +879,14 @@

    Get started

    Download Installer Windows · Setup.exe (unsigned — SmartScreen guidance in docs)
    - 🗎 User Manual Staff + IT + Architecture - 📄 @@ -907,16 +907,16 @@

    🛠 IT Admin Guide - + 📝 CHANGELOG - + 🤝 Contributing - + 📃 Canonical Spec - + ⚖ Apache 2.0 License

    @@ -934,7 +934,7 @@

    Built for American cities. Open source. Locally hosted. Your data stays yours.

    - github.com/CivicSuite/civicrecords-ai + github.com/townlight/sunshine

    Copyright © 2026 CivicSunshine Contributors  ·  Apache License 2.0

    diff --git a/docs/user-manual-staff.html b/docs/user-manual-staff.html index eb3e0ce..f7b90df 100644 --- a/docs/user-manual-staff.html +++ b/docs/user-manual-staff.html @@ -538,10 +538,10 @@

    v1.2.0 — what's new for st
    • If your city enables the public portal (optional, off by default). Residents can now create their own account and submit a records request through a public surface (/public/*). Those submissions land in your normal request list and look like any other request — same statuses, same timeline, same workflow. You handle them exactly the way you handle staff-created requests today. Anonymous walk-up submission is not supported — every public submission has a logged-in resident as created_by.
    • Connector credentials are now encrypted at rest (ENG-001 closed). This is entirely transparent to you. Nothing in the staff UI changes. What changed: if your IT admin ever exports the database or restores a backup, connector credentials appear as ciphertext rather than plaintext. Your admin has a new ENCRYPTION_KEY to manage — see the Administrator Manual for the operator detail; no staff action required.
    • -
    • Windows double-click installer is available. If your organization deploys new workstations from Windows, there is now a CivicSunshine-1.2.0-Setup.exe on the v1.2.0 release page. It is unsigned by design, so Windows SmartScreen will show "Windows protected your PC — Unknown publisher" on first run. Remediation: More info → Run anyway. This is expected and safe when the installer came from the official release page with a matching SHA-256 checksum.
    • +
    • Windows double-click installer is available. If your organization deploys new workstations from Windows, there is now a CivicSunshine-1.2.0-Setup.exe on the v1.2.0 release page. It is unsigned by design, so Windows SmartScreen will show "Windows protected your PC — Unknown publisher" on first run. Remediation: More info → Run anyway. This is expected and safe when the installer came from the official release page with a matching SHA-256 checksum.

    - Full release narrative lives in the v1.2.0 release notes and CHANGELOG.md §[1.2.0]. Nothing else in this manual changed. + Full release narrative lives in the v1.2.0 release notes and CHANGELOG.md §[1.2.0]. Nothing else in this manual changed.

    @@ -1387,8 +1387,8 @@

    Community Discussions

    CivicSunshine is an open-source project with an active community. If you have questions about how to use a feature, want to suggest an improvement, or want to see how other cities are using the tool, visit the project's GitHub Discussions page:

    - - github.com/CivicSuite/civicrecords-ai/discussions + + github.com/townlight/sunshine/discussions

    @@ -1400,7 +1400,7 @@

    Reporting Bugs

  • Note the exact steps you took before the problem occurred.
  • Take a screenshot if possible (press PrtScn on your keyboard).
  • Contact your IT administrator with the details. They will determine whether it is a local configuration issue or a bug in the software.
  • -
  • If it is a software bug, your administrator can file an issue on the project's GitHub Issues page: github.com/CivicSuite/civicrecords-ai/issues
  • +
  • If it is a software bug, your administrator can file an issue on the project's GitHub Issues page: github.com/townlight/sunshine/issues
  • diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 0970e78..3ab048a 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -10,10 +10,10 @@ "dependencies": { "@base-ui/react": "^1.3.0", "@fontsource-variable/geist": "^5.2.8", - "@tiptap/extension-underline": "^3.22.3", - "@tiptap/pm": "^3.22.3", - "@tiptap/react": "^3.22.3", - "@tiptap/starter-kit": "^3.22.3", + "@tiptap/extension-underline": "^3.31.3", + "@tiptap/pm": "^3.31.3", + "@tiptap/react": "^3.31.3", + "@tiptap/starter-kit": "^3.31.3", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cron-parser": "^4.9.0", @@ -1191,12 +1191,6 @@ "node": ">=10" } }, - "node_modules/@remirror/core-constants": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-3.0.0.tgz", - "integrity": "sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==", - "license": "MIT" - }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.27", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", @@ -1645,48 +1639,49 @@ } }, "node_modules/@tiptap/core": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.22.3.tgz", - "integrity": "sha512-Dv9MKK5BDWCF0N2l6/Pxv3JNCce2kwuWf2cKMBc2bEetx0Pn6o7zlFmSxMvYK4UtG1Tw9Yg/ZHi6QOFWK0Zm9Q==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.31.3.tgz", + "integrity": "sha512-Cz50pvciQrxdSxgTkHOVz0uD0Yl/8Xt0QatGD6ILm47jW8EzyHR9RkUGs/D5IqzXKuVPntfw1ttaT926vXfiRg==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/pm": "^3.22.3" + "@tiptap/pm": "3.31.3" } }, "node_modules/@tiptap/extension-blockquote": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-3.22.3.tgz", - "integrity": "sha512-IaUx3zh7yLHXzIXKL+fw/jzFhsIImdhJyw0lMhe8FfYrefFqXJFYW/sey6+L/e8B3AWvTksPA6VBwefzbH77JA==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-3.31.3.tgz", + "integrity": "sha512-fyY2XMbyDDDfOTQ1Qdrnqa1qwC9DWE4n7AfE0EKQI0G8MfLV8RaDlLDcOZDJ9JbMPY7/Gx7EjyK4NKxSW9n2hQ==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3" + "@tiptap/core": "3.31.3", + "@tiptap/pm": "3.31.3" } }, "node_modules/@tiptap/extension-bold": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-3.22.3.tgz", - "integrity": "sha512-tysipHla2zCWr8XNIWRaW9O+7i7/SoEqnRqSRUUi2ailcJjlia+RBy3RykhkgyThrQDStu5KGBS/UvrXwA+O1A==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-3.31.3.tgz", + "integrity": "sha512-dIuYhKk8TitKU/FeDpoTeWZhU42YgDN5npgWNjAmMmRktPdoxnH3/wGSiwXlqZgJWjehN7kPWDePWpJeAImGpQ==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3" + "@tiptap/core": "3.31.3" } }, "node_modules/@tiptap/extension-bubble-menu": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-3.22.3.tgz", - "integrity": "sha512-Y6zQjh0ypDg32HWgICEvmPSKjGLr39k3aDxxt/H0uQEZSfw4smT0hxUyyyjVjx68C6t6MTnwdfz0hPI5lL68vQ==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-3.31.3.tgz", + "integrity": "sha512-EV6ZnwKc++2OM/OcD54n8s1B7C9LP7GKAtdEPwu0t3BYJf3sG8Ueoinf7SgGPO9oMPg96GneOkDNm1urMV167g==", "license": "MIT", "optional": true, "dependencies": { @@ -1697,80 +1692,80 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3", - "@tiptap/pm": "^3.22.3" + "@tiptap/core": "3.31.3", + "@tiptap/pm": "3.31.3" } }, "node_modules/@tiptap/extension-bullet-list": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-3.22.3.tgz", - "integrity": "sha512-xOmW/b1hgECIE6r3IeZvKn4VVlG3+dfTjCWE6lnnyLaqdNkNhKS1CwUmDZdYNLUS2ryIUtgz5ID1W/8A3PhbiA==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-3.31.3.tgz", + "integrity": "sha512-qEyyoPapPef4LO8XKaN83bxtaNzkJ4kFn/IxLnEKd4BJ3Mvi4MH2yJYlyDqwFnMoev4pMA1zBHRAt/C0THRmZw==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/extension-list": "^3.22.3" + "@tiptap/extension-list": "3.31.3" } }, "node_modules/@tiptap/extension-code": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-3.22.3.tgz", - "integrity": "sha512-wafWTDQOuMKtXpZEuk1PFQmzopabBciNLryL90MB9S03MNLaQQZYLnmYkDBlzAaLAbgF5QiC+2XZQEBQuTVjFQ==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-3.31.3.tgz", + "integrity": "sha512-SzxOqchrD2AcN3uT67PjKmRFEMOU3vNNiwNaamZJUbZrI6Hmy+bvdHJrc3jrIddyyCrAtsnAfRI0cmorW1jGfg==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3" + "@tiptap/core": "3.31.3" } }, "node_modules/@tiptap/extension-code-block": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-3.22.3.tgz", - "integrity": "sha512-RiQtEjDAPrHpdo6sw6b7fOw/PijqgFIsozKKkGcSeBgWHQuFg7q9OxJTj+l0e60rVwSu/5gmKEEobzM9bX+t2Q==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-3.31.3.tgz", + "integrity": "sha512-nvknt4FhyJQjYcvxptmeUlFsIAc8ibua3E5BN4Pim374/9RWepH4cdE9X0/qUTtguHElLx0iKtSIY3rW2qGTFA==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3", - "@tiptap/pm": "^3.22.3" + "@tiptap/core": "3.31.3", + "@tiptap/pm": "3.31.3" } }, "node_modules/@tiptap/extension-document": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-3.22.3.tgz", - "integrity": "sha512-MCSr1PFPtTd++lA3H1RNgqAczAE59XXJ5wUFIQf2F+/0DPY5q2SU4g5QsNJVxPPft5mrNT4C6ty8xBPrALFEdA==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-3.31.3.tgz", + "integrity": "sha512-EexgmqnyDNyGlISxo7SMrp5MygpJYmqD+0cY5jB6L1U6L4CpKKRWUt8OO1sWzEHDE1+TTvwt+WIFoIWAziOtEA==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3" + "@tiptap/core": "3.31.3" } }, "node_modules/@tiptap/extension-dropcursor": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-3.22.3.tgz", - "integrity": "sha512-taXq9Tl5aybdFbptJtFRHX9LFJzbXphAbPp4/vutFyTrBu5meXDxuS+B9pEmE+Or0XcolTlW2nDZB0Tqnr18JQ==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-3.31.3.tgz", + "integrity": "sha512-NWomSfu5CSC7VacnMSDzKT8qm66SzMfZwVPEtwY5bPpRTJgTiT1rNK0neDrrzfMN27MfylGyKWWf7Q5Qf8w/fg==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/extensions": "^3.22.3" + "@tiptap/extensions": "3.31.3" } }, "node_modules/@tiptap/extension-floating-menu": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-3.22.3.tgz", - "integrity": "sha512-0f8b4KZ3XKai8GXWseIYJGdOfQr3evtFbBo3U08zy2aYzMMXWG0zEF7qe5/oiYp2aZ95edjjITnEceviTsZkIg==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-3.31.3.tgz", + "integrity": "sha512-rd4VJ9PGSP9Eop8ZTEwaLZcMzMXLuJKe3hUNf58rq+zANpwM+9fI+vB7g9MAc3eXwUNDxNDVACFIL2oeBqpQ3A==", "license": "MIT", "optional": true, "funding": { @@ -1779,236 +1774,231 @@ }, "peerDependencies": { "@floating-ui/dom": "^1.0.0", - "@tiptap/core": "^3.22.3", - "@tiptap/pm": "^3.22.3" + "@tiptap/core": "3.31.3", + "@tiptap/pm": "3.31.3" } }, "node_modules/@tiptap/extension-gapcursor": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-3.22.3.tgz", - "integrity": "sha512-L/Px4UeQEVG/D9WIlcAOIej+4wyIBCMUSYicSR+hW68UsObe4rxVbUas1QgidQKm6DOhoT7U7D4KQHA/Gdg/7A==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-3.31.3.tgz", + "integrity": "sha512-EBXKb1FrVStsNYCcRGtd9jmzveCvR+eqgg1rVqoONrqFK6U7bga6LN+1dMKroP1kliDVgveYkP3vRYxqw+rFqg==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/extensions": "^3.22.3" + "@tiptap/extensions": "3.31.3" } }, "node_modules/@tiptap/extension-hard-break": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-3.22.3.tgz", - "integrity": "sha512-J0v8I99y9tbvVmgKYKzKP/JYNsWaZYS7avn4rzLft2OhnyTfwt3OoY8DtpHmmi6apSUaCtoWHWta/TmoEfK1nQ==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-3.31.3.tgz", + "integrity": "sha512-QAdCvNO4+yW9ATwsrej11NTkDYFqPLIEQr3ARNrKOK1qaiS7A0fia2SEukb/hrkP3A6mbozhoQt2r2RGUf/DpQ==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3" + "@tiptap/core": "3.31.3" } }, "node_modules/@tiptap/extension-heading": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-3.22.3.tgz", - "integrity": "sha512-XBHuhiEV2EEhZHpOLcplLqAmBIhJciU3I6AtwmqeEqDC0P114uMEfAO7JGlbBZdCYotNer26PKnu44TBTeNtkw==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-3.31.3.tgz", + "integrity": "sha512-rk5VHMAeQcg06SLauN6EGdD2jc0O2qY8QkZYPd0LxNvLblw2BxBx+lxUQSYwLAT9Ie5914gKIK2YbRyO2Ts3ig==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3" + "@tiptap/core": "3.31.3" } }, "node_modules/@tiptap/extension-horizontal-rule": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.22.3.tgz", - "integrity": "sha512-wI2bFzScs+KgWeBH/BtypcVKeYelCyqV0RG8nxsZMWtPrBhqixzNd0Oi3gEKtjSjKUqMQ/kjJAIRuESr5UzlHA==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.31.3.tgz", + "integrity": "sha512-YnHGy2KShRwvCseAmmxl9VP7R0qaj8QMp3DA6DJWZqp7r5gLGvDkAqhedxqqefqsE4Y43hjkBdjtB9Ce78LkIw==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3", - "@tiptap/pm": "^3.22.3" + "@tiptap/core": "3.31.3", + "@tiptap/pm": "3.31.3" } }, "node_modules/@tiptap/extension-italic": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-3.22.3.tgz", - "integrity": "sha512-LteA4cb4EGCiUtrK2JHvDF/Zg0/YqV4DUyHhAAho+oGEQDupZlsS6m0ia5wQcclkiTLzsoPrwcSNu6RDGQ16wQ==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-3.31.3.tgz", + "integrity": "sha512-ibGvdvAPyfxBMUVNRI43eb9h2/Jka1MRG5GtnGqbcCX/2+Y/y0EOfFrPQPkuYphiWQYyu9+FzPKMB/pjuaLuKQ==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3" + "@tiptap/core": "3.31.3" } }, "node_modules/@tiptap/extension-link": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-3.22.3.tgz", - "integrity": "sha512-S8/P2o9pv6B3kqLjH2TRWwSAximGbciNc6R8/QcN6HWLYxp0N0JoqN3rZHl9VWIBAGRWc4zkt80dhqrl2xmgfQ==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-3.31.3.tgz", + "integrity": "sha512-986wOQzTL9Zr5lf84LCLpm+YOms8A0K39/8DVoqRfebqcOe0/eq4bnztmAlfabOd+kJY92g3AgZERFUx/w+dcw==", "license": "MIT", "dependencies": { - "linkifyjs": "^4.3.2" + "linkifyjs": "^4.3.3" }, "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3", - "@tiptap/pm": "^3.22.3" + "@tiptap/core": "3.31.3", + "@tiptap/pm": "3.31.3" } }, "node_modules/@tiptap/extension-list": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list/-/extension-list-3.22.3.tgz", - "integrity": "sha512-rqvv/dtqwbX+8KnPv0eMYp6PnBcuhPMol5cv1GlS8Nq/Cxt68EWGUHBuTFesw+hdnRQLmKwzoO1DlRn7PhxYRQ==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list/-/extension-list-3.31.3.tgz", + "integrity": "sha512-LoveGnC0FVdCV4jUNBaG1ZA+KWE07+adzV3kGy6uUYFcJEjbVUHTnPDrBOob3IwOSO3sCwIkvQb6EVYeXn/4yg==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3", - "@tiptap/pm": "^3.22.3" + "@tiptap/core": "3.31.3", + "@tiptap/pm": "3.31.3" } }, "node_modules/@tiptap/extension-list-item": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-3.22.3.tgz", - "integrity": "sha512-80CNf4oO5y8+LdckT4CyMe1t01EyhpRrQC9H45JW20P7559Nrchp5my3vvMtIAJbpTPPZtcB7LwdzWGKsG5drg==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-3.31.3.tgz", + "integrity": "sha512-4QlKOriJJMvg95QJTEsy9BUYPBQ6UvJyb8WURRwdUtQUkkqb8h32lg/eyQUv2FzW9IT1AdUyNZfVaxH64kRfQA==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/extension-list": "^3.22.3" + "@tiptap/extension-list": "3.31.3" } }, "node_modules/@tiptap/extension-list-keymap": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-keymap/-/extension-list-keymap-3.22.3.tgz", - "integrity": "sha512-pKuyj5llu35zd/s2u/H9aydKZjmPRAIK5P1q/YXULhhCNln2RnmuRfQ5NklAqTD3yGciQ2lxDwwf7J6iw3ergA==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-keymap/-/extension-list-keymap-3.31.3.tgz", + "integrity": "sha512-If8UOEdDZbPJU6iYTvLtH6DOp2KBy6BKxg9UELL1AevVetGHEF/7lW8hP50Gn1tHMVpPRqmhSzVrJRpEJJgb/Q==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/extension-list": "^3.22.3" + "@tiptap/extension-list": "3.31.3" } }, "node_modules/@tiptap/extension-ordered-list": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-3.22.3.tgz", - "integrity": "sha512-orAghtmd+K4Euu4BgI1hG+iZDXBYOyl5YTwiLBc2mQn+pqtZ9LqaH2us4ETwEwNP3/IWXGSAimUZ19nuL+eM2w==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-3.31.3.tgz", + "integrity": "sha512-mp3g11NgA/PYu8rj7J7Ez3l4qBy6WfTSmHIG4PZvEGG5w2oUAIkgb9DU7nPPzjmeme27oazFYZw+AtZA0+u4tw==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/extension-list": "^3.22.3" + "@tiptap/extension-list": "3.31.3" } }, "node_modules/@tiptap/extension-paragraph": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-3.22.3.tgz", - "integrity": "sha512-oO7rhfyhEuwm+50s9K3GZPjYyEEEvFAvm1wXopvZnhbkBLydIWImBfrZoC5IQh4/sRDlTIjosV2C+ji5y0tUSg==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-3.31.3.tgz", + "integrity": "sha512-+iPku7wJfy5hbNDNLX8dveFtYVsZMmh7vztjuq8hT3mipSC4IByDehDbU8fzUCjfXiEzmI7mQn7c8LGmHULuzA==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3" + "@tiptap/core": "3.31.3" } }, "node_modules/@tiptap/extension-strike": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-3.22.3.tgz", - "integrity": "sha512-jY2InoUlKkuk5KHoIDGdML1OCA2n6PRHAtxwHNkAmiYh0Khf0zaVPGFpx4dgQrN7W5Q1WE6oBZnjrvy6qb7w0g==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-3.31.3.tgz", + "integrity": "sha512-G29bhKttYwcKHT+BI6emWVFol3RO/gUXxQVcmr/iT8LXXy7j8J6HFUnsKM+Kg5YlP1rxMRgsa65dbrQVahZi0A==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3" + "@tiptap/core": "3.31.3" } }, "node_modules/@tiptap/extension-text": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-3.22.3.tgz", - "integrity": "sha512-Q9R7JsTdomP5uUjtPjNKxHT1xoh/i9OJZnmgJLe7FcgZEaPOQ3bWxmKZoLZQfDfZjyB8BtH+Hc7nUvhCMOePxw==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-3.31.3.tgz", + "integrity": "sha512-gdsWtF+taeaCu6V+5Ct10fGo0ACUy1GnYtbb+mcathBt8OqbT+Ws60p/yEmKesBDz2Hn+B5IcWy6+2BBZl5ZTg==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3" + "@tiptap/core": "3.31.3" } }, "node_modules/@tiptap/extension-underline": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-3.22.3.tgz", - "integrity": "sha512-Ch6CBWRa5w90yYSPUW6x9Py9JdrXMqk3pZ9OIlMYD8A7BqyZGfiHerX7XDMYDS09KjyK3U9XH60/zxYOzXdDLA==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-3.31.3.tgz", + "integrity": "sha512-HghdJaOwRqYzsAxqSyNyb+IWyOMcdCl8IoiBETA9BZCJAqdXzFLcuWp7CqCqJPam9dgkWosSoHqTCAO4nTBfpw==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3" + "@tiptap/core": "3.31.3" } }, "node_modules/@tiptap/extensions": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.22.3.tgz", - "integrity": "sha512-s5eiMq0m5N6N+W7dU6rd60KgZyyCD7FvtPNNswISfPr12EQwJBfbjWwTqd0UKNzA4fNrhQEERXnzORkykttPeA==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.31.3.tgz", + "integrity": "sha512-8sJNPGGUe8f3aDojcOW5cfVL7I5NrBbE0UWxG08qoi9Tea6qWbvQJsCR9tsrOapr/DaLr3kpbGZ9s1gEEfcNcA==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.22.3", - "@tiptap/pm": "^3.22.3" + "@tiptap/core": "3.31.3", + "@tiptap/pm": "3.31.3" } }, "node_modules/@tiptap/pm": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.22.3.tgz", - "integrity": "sha512-NjfWjZuvrqmpICT+GZWNIjtOdhPyqFKDMtQy7tsQ5rErM9L2ZQdy/+T/BKSO1JdTeBhdg9OP+0yfsqoYp2aT6A==", - "license": "MIT", - "dependencies": { - "prosemirror-changeset": "^2.3.0", - "prosemirror-collab": "^1.3.1", - "prosemirror-commands": "^1.6.2", - "prosemirror-dropcursor": "^1.8.1", - "prosemirror-gapcursor": "^1.3.2", - "prosemirror-history": "^1.4.1", - "prosemirror-inputrules": "^1.4.0", - "prosemirror-keymap": "^1.2.2", - "prosemirror-markdown": "^1.13.1", - "prosemirror-menu": "^1.2.4", - "prosemirror-model": "^1.24.1", - "prosemirror-schema-basic": "^1.2.3", - "prosemirror-schema-list": "^1.5.0", - "prosemirror-state": "^1.4.3", - "prosemirror-tables": "^1.6.4", - "prosemirror-trailing-node": "^3.0.0", - "prosemirror-transform": "^1.10.2", - "prosemirror-view": "^1.38.1" + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.31.3.tgz", + "integrity": "sha512-sZime0SWsz/k62W2WvHx5Ig7G2h7kVhrrmnqy+wEgIHfDwEfOlelRjaWCiBCFlF7dxGUntJusCh9FxlLhni0Ag==", + "license": "MIT", + "dependencies": { + "prosemirror-changeset": "^2.4.1", + "prosemirror-commands": "^1.7.1", + "prosemirror-dropcursor": "^1.8.2", + "prosemirror-gapcursor": "^1.4.1", + "prosemirror-history": "^1.5.0", + "prosemirror-inputrules": "^1.5.1", + "prosemirror-keymap": "^1.2.3", + "prosemirror-model": "^1.25.11", + "prosemirror-schema-list": "^1.5.1", + "prosemirror-state": "^1.4.4", + "prosemirror-tables": "^1.8.5", + "prosemirror-transform": "^1.12.0", + "prosemirror-view": "^1.42.3" }, "funding": { "type": "github", @@ -2016,9 +2006,9 @@ } }, "node_modules/@tiptap/react": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/react/-/react-3.22.3.tgz", - "integrity": "sha512-6MNr6z0PxwfJFs+BKhHcvPNvY+UV1PXgqzTiTM4Z9guml84iVZxv7ZOCSj1dFYTr3Bf1MiOs4hT1yvBFlTfIaQ==", + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/react/-/react-3.31.3.tgz", + "integrity": "sha512-QiwQqvaLFLm5EMFu5tg7nAgXJxCUiUTLD8EsK+TqVV5P4bqOoMOCM39khbhXTJyahCuYpiFWx5YOSDtC/JiPtg==", "license": "MIT", "dependencies": { "@types/use-sync-external-store": "^0.0.6", @@ -2030,12 +2020,12 @@ "url": "https://github.com/sponsors/ueberdosis" }, "optionalDependencies": { - "@tiptap/extension-bubble-menu": "^3.22.3", - "@tiptap/extension-floating-menu": "^3.22.3" + "@tiptap/extension-bubble-menu": "^3.31.3", + "@tiptap/extension-floating-menu": "^3.31.3" }, "peerDependencies": { - "@tiptap/core": "^3.22.3", - "@tiptap/pm": "^3.22.3", + "@tiptap/core": "3.31.3", + "@tiptap/pm": "3.31.3", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "@types/react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", @@ -2043,35 +2033,35 @@ } }, "node_modules/@tiptap/starter-kit": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-3.22.3.tgz", - "integrity": "sha512-vdW/Oo1fdwTL1VOQ5YYbTov00ANeHLquBVEZyL/EkV7Xv5io9rXQsCysJfTSHhiQlyr2MtWFB4+CPGuwXjQWOQ==", - "license": "MIT", - "dependencies": { - "@tiptap/core": "^3.22.3", - "@tiptap/extension-blockquote": "^3.22.3", - "@tiptap/extension-bold": "^3.22.3", - "@tiptap/extension-bullet-list": "^3.22.3", - "@tiptap/extension-code": "^3.22.3", - "@tiptap/extension-code-block": "^3.22.3", - "@tiptap/extension-document": "^3.22.3", - "@tiptap/extension-dropcursor": "^3.22.3", - "@tiptap/extension-gapcursor": "^3.22.3", - "@tiptap/extension-hard-break": "^3.22.3", - "@tiptap/extension-heading": "^3.22.3", - "@tiptap/extension-horizontal-rule": "^3.22.3", - "@tiptap/extension-italic": "^3.22.3", - "@tiptap/extension-link": "^3.22.3", - "@tiptap/extension-list": "^3.22.3", - "@tiptap/extension-list-item": "^3.22.3", - "@tiptap/extension-list-keymap": "^3.22.3", - "@tiptap/extension-ordered-list": "^3.22.3", - "@tiptap/extension-paragraph": "^3.22.3", - "@tiptap/extension-strike": "^3.22.3", - "@tiptap/extension-text": "^3.22.3", - "@tiptap/extension-underline": "^3.22.3", - "@tiptap/extensions": "^3.22.3", - "@tiptap/pm": "^3.22.3" + "version": "3.31.3", + "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-3.31.3.tgz", + "integrity": "sha512-WKof9RewdmGHvWJ1wn0/HVNG2mV+HOgVRyJkKekuM9fgr6BZAAH/xZsWE1eon+94JnQ+KtK2ThydXQM/qc6b2A==", + "license": "MIT", + "dependencies": { + "@tiptap/core": "3.31.3", + "@tiptap/extension-blockquote": "3.31.3", + "@tiptap/extension-bold": "3.31.3", + "@tiptap/extension-bullet-list": "3.31.3", + "@tiptap/extension-code": "3.31.3", + "@tiptap/extension-code-block": "3.31.3", + "@tiptap/extension-document": "3.31.3", + "@tiptap/extension-dropcursor": "3.31.3", + "@tiptap/extension-gapcursor": "3.31.3", + "@tiptap/extension-hard-break": "3.31.3", + "@tiptap/extension-heading": "3.31.3", + "@tiptap/extension-horizontal-rule": "3.31.3", + "@tiptap/extension-italic": "3.31.3", + "@tiptap/extension-link": "3.31.3", + "@tiptap/extension-list": "3.31.3", + "@tiptap/extension-list-item": "3.31.3", + "@tiptap/extension-list-keymap": "3.31.3", + "@tiptap/extension-ordered-list": "3.31.3", + "@tiptap/extension-paragraph": "3.31.3", + "@tiptap/extension-strike": "3.31.3", + "@tiptap/extension-text": "3.31.3", + "@tiptap/extension-underline": "3.31.3", + "@tiptap/extensions": "3.31.3", + "@tiptap/pm": "3.31.3" }, "funding": { "type": "github", @@ -2156,28 +2146,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", - "license": "MIT" - }, - "node_modules/@types/markdown-it": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", - "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", - "license": "MIT", - "dependencies": { - "@types/linkify-it": "^5", - "@types/mdurl": "^2" - } - }, - "node_modules/@types/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", - "license": "MIT" - }, "node_modules/@types/prop-types": { "version": "15.7.15", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", @@ -2394,6 +2362,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, "license": "Python-2.0" }, "node_modules/aria-query": { @@ -2471,9 +2440,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.18", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.18.tgz", - "integrity": "sha512-VSnGQAOLtP5mib/DPyg2/t+Tlv65NTBz83BJBJvmLVHHuKJVaDOBvJJykiT5TR++em5nfAySPccDZDa4oSrn8A==", + "version": "2.11.21", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.21.tgz", + "integrity": "sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -2518,9 +2487,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "version": "4.28.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.9.tgz", + "integrity": "sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==", "dev": true, "funding": [ { @@ -2538,11 +2507,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" + "baseline-browser-mapping": "^2.11.20", + "caniuse-lite": "^1.0.30001810", + "electron-to-chromium": "^1.5.420", + "node-releases": "^2.0.54", + "update-browserslist-db": "^1.3.2" }, "bin": { "browserslist": "cli.js" @@ -2571,9 +2540,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001787", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001787.tgz", - "integrity": "sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==", + "version": "1.0.30001810", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz", + "integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==", "dev": true, "funding": [ { @@ -2718,12 +2687,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/crelt": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", - "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", - "license": "MIT" - }, "node_modules/cron-parser": { "version": "4.9.0", "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", @@ -2855,24 +2818,12 @@ "peer": true }, "node_modules/electron-to-chromium": { - "version": "1.5.335", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.335.tgz", - "integrity": "sha512-q9n5T4BR4Xwa2cwbrwcsDJtHD/enpQ5S1xF1IAtdqf5AAgqDFmR/aakqH3ChFdqd/QXJhS3rnnXFtexU7rax6Q==", + "version": "1.5.423", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.423.tgz", + "integrity": "sha512-rRZfTSY8ptHYMQxa+uIycJMFKmY1T0GIApNMXJYGehguTZa56TEEl19pKPCoBqk5Gpf7QizZn/jt7xur+DYxag==", "dev": true, "license": "ISC" }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/es-errors": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", @@ -2941,18 +2892,6 @@ "node": ">=6" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -3409,29 +3348,10 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "license": "MIT" }, - "node_modules/linkify-it": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz", - "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/markdown-it" - } - ], - "license": "MIT", - "dependencies": { - "uc.micro": "^2.0.0" - } - }, "node_modules/linkifyjs": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.3.2.tgz", - "integrity": "sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.3.3.tgz", + "integrity": "sha512-P8aEP5U/D1/IlTY2OeYsErdwh9bGuLE30NcXtKEjgdHcahveQoQwM2yZNsioQHsWFz0P7KKudisbrzCgR0sDHg==", "license": "MIT" }, "node_modules/loose-envify": { @@ -3502,39 +3422,6 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/markdown-it": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", - "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/markdown-it" - } - ], - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.5.0", - "linkify-it": "^5.0.2", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "license": "MIT" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3604,11 +3491,14 @@ } }, "node_modules/node-releases": { - "version": "2.0.37", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", - "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", + "version": "2.0.54", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.54.tgz", + "integrity": "sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/normalize-path": { "version": "3.0.0", @@ -3979,9 +3869,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz", + "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -4039,27 +3929,18 @@ } }, "node_modules/prosemirror-changeset": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.4.0.tgz", - "integrity": "sha512-LvqH2v7Q2SF6yxatuPP2e8vSUKS/L+xAU7dPDC4RMyHMhZoGDfBC74mYuyYF4gLqOEG758wajtyhNnsTkuhvng==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.4.2.tgz", + "integrity": "sha512-ViYrjMSg3YFiXwIhKaluu+/mi3Yrxt6AR8ri14ulTaGcZtXO1CThl7A2gv79qx5fQnOw8woKwyBU2u+9PVCm3w==", "license": "MIT", "dependencies": { "prosemirror-transform": "^1.0.0" } }, - "node_modules/prosemirror-collab": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", - "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", - "license": "MIT", - "dependencies": { - "prosemirror-state": "^1.0.0" - } - }, "node_modules/prosemirror-commands": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.7.1.tgz", - "integrity": "sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.7.2.tgz", + "integrity": "sha512-q6Q6szxqdu9Xd6EcdKsqXghu5nQdZTpB4Q9yd04WRc7/jt763e/rT60Owh0L1GYY+T46o5rD+9lEN36dZS43tw==", "license": "MIT", "dependencies": { "prosemirror-model": "^1.0.0", @@ -4122,47 +4003,15 @@ "w3c-keyname": "^2.2.0" } }, - "node_modules/prosemirror-markdown": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.4.tgz", - "integrity": "sha512-D98dm4cQ3Hs6EmjK500TdAOew4Z03EV71ajEFiWra3Upr7diytJsjF4mPV2dW+eK5uNectiRj0xFxYI9NLXDbw==", - "license": "MIT", - "dependencies": { - "@types/markdown-it": "^14.0.0", - "markdown-it": "^14.0.0", - "prosemirror-model": "^1.25.0" - } - }, - "node_modules/prosemirror-menu": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.3.0.tgz", - "integrity": "sha512-TImyPXCHPcDsSka2/lwJ6WjTASr4re/qWq1yoTTuLOqfXucwF6VcRa2LWCkM/EyTD1UO3CUwiH8qURJoWJRxwg==", - "license": "MIT", - "dependencies": { - "crelt": "^1.0.0", - "prosemirror-commands": "^1.0.0", - "prosemirror-history": "^1.0.0", - "prosemirror-state": "^1.0.0" - } - }, "node_modules/prosemirror-model": { - "version": "1.25.4", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.4.tgz", - "integrity": "sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==", + "version": "1.25.11", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.11.tgz", + "integrity": "sha512-QWg9RhnpLlogAmp3p96uEFrE5txQpFynd4vhBAELkwgOCWQs/X0yCzB3/hrHqiPwf91RG5KyWq6553zs9JqIOQ==", "license": "MIT", "dependencies": { "orderedmap": "^2.0.0" } }, - "node_modules/prosemirror-schema-basic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.4.tgz", - "integrity": "sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==", - "license": "MIT", - "dependencies": { - "prosemirror-model": "^1.25.0" - } - }, "node_modules/prosemirror-schema-list": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz", @@ -4198,21 +4047,6 @@ "prosemirror-view": "^1.41.4" } }, - "node_modules/prosemirror-trailing-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-3.0.0.tgz", - "integrity": "sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==", - "license": "MIT", - "dependencies": { - "@remirror/core-constants": "3.0.0", - "escape-string-regexp": "^4.0.0" - }, - "peerDependencies": { - "prosemirror-model": "^1.22.1", - "prosemirror-state": "^1.4.2", - "prosemirror-view": "^1.33.8" - } - }, "node_modules/prosemirror-transform": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.12.0.tgz", @@ -4223,12 +4057,12 @@ } }, "node_modules/prosemirror-view": { - "version": "1.41.8", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.41.8.tgz", - "integrity": "sha512-TnKDdohEatgyZNGCDWIdccOHXhYloJwbwU+phw/a23KBvJIR9lWQWW7WHHK3vBdOLDNuF7TaX98GObUZOWkOnA==", + "version": "1.42.3", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.42.3.tgz", + "integrity": "sha512-oTN7EtH+CpwxU9NrwEYWd0UZ4JUx7l048l5A2Xppm4p/60isZYLnth9QVQmC3VRIvdrIWCxwZSd+Uz791G31/w==", "license": "MIT", "dependencies": { - "prosemirror-model": "^1.20.0", + "prosemirror-model": "^1.25.8", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0" } @@ -4243,15 +4077,6 @@ "node": ">=6" } }, - "node_modules/punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -4904,16 +4729,10 @@ "node": ">=14.17" } }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "license": "MIT" - }, "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.2.tgz", + "integrity": "sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==", "dev": true, "funding": [ { diff --git a/frontend/package.json b/frontend/package.json index 601320d..9a94749 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -15,10 +15,10 @@ "dependencies": { "@base-ui/react": "^1.3.0", "@fontsource-variable/geist": "^5.2.8", - "@tiptap/extension-underline": "^3.22.3", - "@tiptap/pm": "^3.22.3", - "@tiptap/react": "^3.22.3", - "@tiptap/starter-kit": "^3.22.3", + "@tiptap/extension-underline": "^3.31.3", + "@tiptap/pm": "^3.31.3", + "@tiptap/react": "^3.31.3", + "@tiptap/starter-kit": "^3.31.3", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cron-parser": "^4.9.0", diff --git a/installer/windows/README.md b/installer/windows/README.md index de788a1..8b1490b 100644 --- a/installer/windows/README.md +++ b/installer/windows/README.md @@ -47,7 +47,7 @@ Get-FileHash -Algorithm SHA256 .\CivicSunshine--Setup.exe Compare the output against the SHA-256 value printed alongside the asset on the corresponding -[GitHub release page](https://github.com/CivicSuite/civicrecords-ai/releases). +[GitHub release page](https://github.com/townlight/sunshine/releases). If the values match, the binary is byte-identical to the one produced by the public CI pipeline at the tagged commit. If they differ, **do not run it** — download again from the release page directly.