Compare commits
No commits in common. "32ec9d8a41cc9ad2ec597ef7bae1d2bcd8d3760b" and "c418d04c305ae49c12b1ca863369f5822f69696e" have entirely different histories.
32ec9d8a41
...
c418d04c30
6 changed files with 1 additions and 115 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -1,7 +1,4 @@
|
||||||
|
|
||||||
# CLAUDE.md — gitignored per BSL 1.1 commercial policy
|
|
||||||
CLAUDE.md
|
|
||||||
|
|
||||||
# Superpowers brainstorming artifacts
|
# Superpowers brainstorming artifacts
|
||||||
.superpowers/
|
.superpowers/
|
||||||
|
|
||||||
|
|
|
||||||
28
LICENSE-BSL
28
LICENSE-BSL
|
|
@ -1,28 +0,0 @@
|
||||||
Business Source License 1.1
|
|
||||||
|
|
||||||
Licensor: Circuit Forge LLC
|
|
||||||
Licensed Work: Kiwi — Pantry tracking and leftover recipe suggestions
|
|
||||||
Copyright (c) 2026 Circuit Forge LLC
|
|
||||||
Additional Use Grant: You may use the Licensed Work for personal,
|
|
||||||
non-commercial pantry tracking and recipe suggestion
|
|
||||||
purposes only.
|
|
||||||
Change Date: 2030-01-01
|
|
||||||
Change License: MIT License
|
|
||||||
|
|
||||||
For the full Business Source License 1.1 text, see:
|
|
||||||
https://mariadb.com/bsl11/
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
This license applies to the following components of Kiwi:
|
|
||||||
|
|
||||||
- app/services/recipe/recipe_engine.py
|
|
||||||
- app/services/recipe/assembly_recipes.py
|
|
||||||
- app/services/recipe/llm_recipe.py
|
|
||||||
- app/services/expiration_predictor.py
|
|
||||||
- app/tasks/scheduler.py
|
|
||||||
- app/tasks/runner.py
|
|
||||||
- app/tiers.py
|
|
||||||
- app/cloud_session.py
|
|
||||||
- frontend/src/components/RecipesView.vue
|
|
||||||
- frontend/src/stores/recipes.ts
|
|
||||||
34
LICENSE-MIT
34
LICENSE-MIT
|
|
@ -1,34 +0,0 @@
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2026 Circuit Forge LLC
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
This license applies to the following components of Kiwi:
|
|
||||||
|
|
||||||
- app/api/endpoints/inventory.py
|
|
||||||
- app/api/endpoints/ocr.py
|
|
||||||
- app/db/store.py
|
|
||||||
- app/db/migrations/
|
|
||||||
- app/core/config.py
|
|
||||||
- scripts/pipeline/
|
|
||||||
- scripts/download_datasets.py
|
|
||||||
- scripts/backfill_texture_profiles.py
|
|
||||||
|
|
@ -219,7 +219,7 @@ def get_session(request: Request) -> CloudUser:
|
||||||
if not raw_header:
|
if not raw_header:
|
||||||
raise HTTPException(status_code=401, detail="Not authenticated")
|
raise HTTPException(status_code=401, detail="Not authenticated")
|
||||||
|
|
||||||
token = _extract_session_token(raw_header) # gitleaks:allow — function name, not a secret
|
token = _extract_session_token(raw_header)
|
||||||
if not token:
|
if not token:
|
||||||
raise HTTPException(status_code=401, detail="Not authenticated")
|
raise HTTPException(status_code=401, detail="Not authenticated")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,25 +14,3 @@ CREATE VIRTUAL TABLE IF NOT EXISTS recipes_fts USING fts5(
|
||||||
);
|
);
|
||||||
|
|
||||||
INSERT INTO recipes_fts(recipes_fts) VALUES('rebuild');
|
INSERT INTO recipes_fts(recipes_fts) VALUES('rebuild');
|
||||||
|
|
||||||
-- Triggers to keep the FTS index in sync with the recipes table.
|
|
||||||
-- Without these, rows inserted after the initial rebuild are invisible to FTS queries.
|
|
||||||
CREATE TRIGGER IF NOT EXISTS recipes_fts_ai
|
|
||||||
AFTER INSERT ON recipes BEGIN
|
|
||||||
INSERT INTO recipes_fts(rowid, ingredient_names)
|
|
||||||
VALUES (new.id, new.ingredient_names);
|
|
||||||
END;
|
|
||||||
|
|
||||||
CREATE TRIGGER IF NOT EXISTS recipes_fts_ad
|
|
||||||
AFTER DELETE ON recipes BEGIN
|
|
||||||
INSERT INTO recipes_fts(recipes_fts, rowid, ingredient_names)
|
|
||||||
VALUES ('delete', old.id, old.ingredient_names);
|
|
||||||
END;
|
|
||||||
|
|
||||||
CREATE TRIGGER IF NOT EXISTS recipes_fts_au
|
|
||||||
AFTER UPDATE ON recipes BEGIN
|
|
||||||
INSERT INTO recipes_fts(recipes_fts, rowid, ingredient_names)
|
|
||||||
VALUES ('delete', old.id, old.ingredient_names);
|
|
||||||
INSERT INTO recipes_fts(rowid, ingredient_names)
|
|
||||||
VALUES (new.id, new.ingredient_names);
|
|
||||||
END;
|
|
||||||
|
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
-- Migration 016: Add FTS5 sync triggers for the recipes_fts content table.
|
|
||||||
--
|
|
||||||
-- Migration 015 created recipes_fts and did a one-time rebuild, but omitted
|
|
||||||
-- triggers. Without them, INSERT/UPDATE/DELETE on recipes does not update the
|
|
||||||
-- FTS index, so new rows are invisible to MATCH queries.
|
|
||||||
--
|
|
||||||
-- CREATE TRIGGER IF NOT EXISTS is idempotent — safe to re-run.
|
|
||||||
|
|
||||||
CREATE TRIGGER IF NOT EXISTS recipes_fts_ai
|
|
||||||
AFTER INSERT ON recipes BEGIN
|
|
||||||
INSERT INTO recipes_fts(rowid, ingredient_names)
|
|
||||||
VALUES (new.id, new.ingredient_names);
|
|
||||||
END;
|
|
||||||
|
|
||||||
CREATE TRIGGER IF NOT EXISTS recipes_fts_ad
|
|
||||||
AFTER DELETE ON recipes BEGIN
|
|
||||||
INSERT INTO recipes_fts(recipes_fts, rowid, ingredient_names)
|
|
||||||
VALUES ('delete', old.id, old.ingredient_names);
|
|
||||||
END;
|
|
||||||
|
|
||||||
CREATE TRIGGER IF NOT EXISTS recipes_fts_au
|
|
||||||
AFTER UPDATE ON recipes BEGIN
|
|
||||||
INSERT INTO recipes_fts(recipes_fts, rowid, ingredient_names)
|
|
||||||
VALUES ('delete', old.id, old.ingredient_names);
|
|
||||||
INSERT INTO recipes_fts(rowid, ingredient_names)
|
|
||||||
VALUES (new.id, new.ingredient_names);
|
|
||||||
END;
|
|
||||||
Loading…
Reference in a new issue