Lattice
A workspace for your research.
Paste text to retrieve unresolved items from a document
Translation pending
AI summary · website content
ProductivityTypeScript · PLpgSQLGitHub @tasso905OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Tie up your loose ends.
Loose Ends turns messages and documents you paste in into a short list of open loops, each backed by the exact sentence it came from, and remembers why you closed them.
Status: started for Build Fest (Oct 2026) and not submitted; now a learning project in active development, with no deadline.
Once extraction ships, pasted text, and later the decisions and quotes used to answer Ask why, are sent to the configured AI provider: Google Gemini (PRD D42). On Gemini's free tier, Google may use prompts and responses to improve its products, and people at Google may read them. Contributors must use synthetic data only. Never paste or commit real personal messages or documents.
.nvmrc or engines field.package.json (packageManager).Install dependencies.
pnpm install
Start local Supabase without the analytics and vector containers. They can fail health checks on macOS, and the app does not need them.
pnpm exec supabase start -x vector,logflare
Create .env.local from the example.
cp .env.example .env.local
pnpm exec supabase status -o env
Then set these values in .env.local:
| Variable | Value |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | API_URL from the status output (http://127.0.0.1:54321) |
NEXT_PUBLIC_SUPABASE_ANON_KEY | ANON_KEY from the status output |
SITE_URL | http://127.0.0.1:3000 |
AI_PROVIDER | fake (replays recorded fixtures, no network calls, no key needed) |
AI_MODEL | recorded |
Start the dev server on 127.0.0.1 and open http://127.0.0.1:3000.
pnpm dev --hostname 127.0.0.1
Use 127.0.0.1, not localhost. Sign-in must return to the same origin it started from, and without --hostname 127.0.0.1 the dev server blocks the page's scripts at that address, so the sign-in button stays disabled.
Sign-in emails go to Mailpit at http://127.0.0.1:54324.
Google sign-in. This is off by default. Follow the comments above [auth.external.google] in supabase/config.toml and in .env.example:
SUPABASE_AUTH_EXTERNAL_GOOGLE_ENABLED, SUPABASE_AUTH_EXTERNAL_GOOGLE_CLIENT_ID and SUPABASE_AUTH_EXTERNAL_GOOGLE_SECRET in supabase/.env (gitignored), then restart Supabase.NEXT_PUBLIC_AUTH_GOOGLE_ENABLED=true in .env.local.Gemini. Set AI_PROVIDER=google, AI_MODEL=gemini-3.6-flash and AI_API_KEY (a key from Google AI Studio) in .env.local. Live calls may count against your quota.
| Task | Command |
|---|---|
| Dev server | pnpm dev --hostname 127.0.0.1 |
| Typecheck | pnpm typecheck |
| Lint | pnpm lint |
| Unit + integration tests | pnpm test |
| Live Supabase checks (needs local Supabase running) | pnpm test:supabase |
| E2E tests (recorded AI fixtures, local Supabase) | pnpm test:e2e |
Extraction + Ask-why eval (live model, uses quota; reads AI_PROVIDER, AI_MODEL and AI_API_KEY from the shell environment, not .env.local) | pnpm eval |
pnpm test:e2e serves the app on 127.0.0.1:3000 and reuses a server already running there, so stop pnpm dev first.
MIT. See LICENSE.