PHPackages                             spora-ai/spora-plugin-memories-frontend - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. spora-ai/spora-plugin-memories-frontend

ActiveSpora-plugin-frontend

spora-ai/spora-plugin-memories-frontend
=======================================

Pre-built Vue SPA for the Spora memories admin panel. Delivered as type `spora-plugin-frontend`; the host SPA lazy-loads it via /plugins/spora-plugin-memories-frontend/main.js.

v0.1.0(1w ago)00MITTypeScriptPHP ^8.4.1CI passing

Since Jul 22Pushed yesterdayCompare

[ Source](https://github.com/spora-ai/spora-plugin-memories-frontend)[ Packagist](https://packagist.org/packages/spora-ai/spora-plugin-memories-frontend)[ RSS](/packages/spora-ai-spora-plugin-memories-frontend/feed)WikiDiscussions main Synced today

READMEChangelog (1)DependenciesVersions (4)Used By (0)

spora-plugin-memories-frontend
==============================

[](#spora-plugin-memories-frontend)

Pre-built Vue SPA for the Spora **Memories** admin panel. Delivered as a Composer package of type `spora-plugin-frontend`; `spora-installer`'s `SporaPluginFrontendInstaller` copies this repo's `frontend/` directory into `public/plugins/spora-plugin-memories-frontend/` so the host SPA can lazy-load it via `/plugins/spora-plugin-memories-frontend/main.js`.

Why a separate repo from the PHP plugin?
----------------------------------------

[](#why-a-separate-repo-from-the-php-plugin)

- The Vue bundle has its own release cadence (visual fixes don't need a PHP tag).
- Backend-only operators can `composer require spora-ai/spora-plugin-memories` without pulling in npm-buildable assets.
- The bundle is independently testable in isolation (Vitest + the smoke script).

What it surfaces
----------------

[](#what-it-surfaces)

The plugin's UI mirrors `spora-frontend/src/apps/memories/` (which it replaces):

- **Global memories** — memories shared across every agent. Drag-to-reorder, create/edit with a Markdown editor, delete.
- **Agent memories** — per-agent memory lists. The sidebar exposes a dropdown to flip between agents; the page shows the same CRUD + reorder affordances scoped to the selected agent.
- **Markdown editor** — each memory's content body uses `md-editor-v3` (externalised at build time, shared with the host SPA so the toolbar styling and CodeMirror bundle aren't duplicated).
- **Drag-to-reorder** — `vue-draggable-plus` drives the list ordering UI; reorder mutations PATCH back to the backend.

Build
-----

[](#build)

```
npm install
npm run build   # writes frontend/main.js + frontend/style.css
npm run smoke   # asserts window.SporaAppMemories.mount is a function
```

The build output (`main.js` + `style.css`) is committed to this repo. Operators get the new bundle on the next `composer update`.

Dev mode (plugin author)
------------------------

[](#dev-mode-plugin-author)

```
npm run dev   # vite dev server on :5175
```

The host SPA's `vite.config.ts` proxies `/plugins/spora-plugin-memories-frontend` to `:5175` so editing `src/*` updates the panel without rebuilding the host. The dev sandbox uses an in-memory mock API (`src/dev-mock.ts`) so it renders without the PHP backend — set `SPORA_PLUGIN_DEV_PORTS=memories:5175` on the host for the cross-port proxy.

Mount contract
--------------

[](#mount-contract)

The IIFE bundle installs `window.SporaAppMemories` (the PascalCase of the slug) with two methods:

- `mount(target: HTMLElement, hostContext)` — create the app, install local Pinia + local router (createMemoryHistory), mount into the host's slot.
- `unmount(target: HTMLElement)` — tear down.

The host's `apps/registry.ts` reads both. The bundle names **must** stay aligned with `memories` → `SporaAppMemories` (see `vite.config.ts → build.lib.name`).

Plugin-local router
-------------------

[](#plugin-local-router)

The plugin installs its own `vue-router` instance with `createMemoryHistory()` — sidebar and `?create=1` / `?memory=N` navigation lives entirely in JS state. The host SPA owns the browser address bar; deep-link routes inside the memories bundle won't change the URL by default. Operators sharing a specific memory view will see only `/apps/memories` in their address bar.

If you need a future deep-link feature, `src/lib/route-detection.ts` already parses `/apps/memories/agents/:id(/:memoryId)?` and returns a typed `PluginRouteMatch`.

Backend compatibility
---------------------

[](#backend-compatibility)

The bundle expects a Spora host with the `memories` plugin installed (`spora-ai/spora-plugin-memories >= 0.1.0`). The plugin's PHP side provides the `/memories` and `/agents/:id/memories` endpoints the bundle calls via `hostContext.api`.

License
-------

[](#license)

MIT — see [LICENSE](LICENSE).

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance99

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

7d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/5be6ae8a46a938dbf3d35611aa2724446742020f0eeefdfa94333aa2d0ee40a2?d=identicon)[fabeat](/maintainers/fabeat)

---

Top Contributors

[![fabeat](https://avatars.githubusercontent.com/u/186884?v=4)](https://github.com/fabeat "fabeat (7 commits)")

### Embed Badge

![Health badge](/badges/spora-ai-spora-plugin-memories-frontend/health.svg)

```
[![Health](https://phpackages.com/badges/spora-ai-spora-plugin-memories-frontend/health.svg)](https://phpackages.com/packages/spora-ai-spora-plugin-memories-frontend)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
