Archipelago — open-source initial import
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# AIUI Project Memory
|
||||
|
||||
## Session Startup
|
||||
1. Run `preview_start` with name `"app"` immediately — runs both Vite (:5173) + Claude proxy (:3141) via `packages/app/scripts/dev.sh`
|
||||
2. Always commit work before ending a session
|
||||
3. Work on `development` branch, merge to `main` only when production ready
|
||||
|
||||
## User Preferences
|
||||
- NO worktrees, NO temporary branches — just `development` and `main`
|
||||
- Always use combined dev script (proxy + frontend), never bare `vite`
|
||||
- Commit frequently to avoid losing work
|
||||
|
||||
## Current State (2026-03-04)
|
||||
- Branch: `overnight/2026-03-03`, all committed and pushed to remote (git.tx1138.com)
|
||||
- Typecheck passes clean
|
||||
|
||||
## What's Been Built
|
||||
- Chat: AI streaming with stop generation, web search, article integration, paste & extract
|
||||
- Content panel tabs: Films, Music, Magazine, News, Books, TV Series, Images, Places, Code, Design System, Nostr, **Apps**
|
||||
- Detail views for each content type (side-by-side desktop, overlay mobile)
|
||||
- **Apps tab**: curated DB of ~30 Nostr/Bitcoin apps, AppsGrid + AppDetail with search/category filtering/how-to
|
||||
- Design system viewer (grid + detail) for tokens, colors, typography, components
|
||||
- Nostr feed scaffold with note/article/zap filtering
|
||||
- Content extraction: contentExtraction.ts + contentFiltering.ts (overhauled classifiers)
|
||||
- **Bare domain extraction** from AI text (e.g. "check out damus.io")
|
||||
- Banner fallback composable (primary → API → gradient)
|
||||
- Image fallbacks: Wikipedia + Google Books sources
|
||||
- Loading skeletons per content type variant
|
||||
- Project grid with breadcrumb nav and inline creation
|
||||
- Filesystem Vite plugin for local project browsing
|
||||
- PWA with star icon, TMDB proxy, Jamendo for music
|
||||
- **Slash command palette**: /code, /nostr, /design, /search show in palette with auto-send
|
||||
- **Chat action buttons**: wrapped in glass container (backdrop blur, border, shadow)
|
||||
- **Settings modal**: Memory + Advanced Settings via gear icon
|
||||
- **Chat history**: dedicated clock icon button
|
||||
- **Web search**: Brave API primary, SearXNG rotation fallback, DuckDuckGo fallback
|
||||
- iOS HIG mobile UX rules in `.cursor/rules/15-mobile-ux.mdc`
|
||||
|
||||
## Key Files
|
||||
- Dev script: `packages/app/scripts/dev.sh`
|
||||
- Launch config: `.claude/launch.json` (name: "app")
|
||||
- Main page: `packages/app/src/pages/ChatPage.vue`
|
||||
- Content panel: `packages/app/src/components/content/ContentPanel.vue`
|
||||
- Content grids: `packages/app/src/components/content/*Grid.vue`
|
||||
- Detail views: `packages/app/src/components/content/*Detail.vue`
|
||||
- **Apps**: `packages/app/src/data/apps.ts` (curated DB), `AppsGrid.vue`, `AppDetail.vue`
|
||||
- AI composable: `packages/app/src/composables/useAI.ts`
|
||||
- Content extraction: `packages/app/src/composables/contentExtraction.ts`
|
||||
- Content filtering: `packages/app/src/composables/contentFiltering.ts`
|
||||
- Content panel logic: `packages/app/src/composables/useContentPanel.ts`
|
||||
- Image fallbacks: `packages/app/src/composables/useImageFallback.ts`
|
||||
- Banner fallback: `packages/app/src/composables/useBannerFallback.ts`
|
||||
- Chat input: `packages/app/src/components/chat/ChatInput.vue`
|
||||
- Prompt palette: `packages/app/src/components/chat/PromptPalette.vue`
|
||||
- Chat message: `packages/app/src/components/chat/ChatMessage.vue`
|
||||
- Settings modal: `packages/app/src/components/chat/SettingsModal.vue`
|
||||
- Web search plugin: `packages/app/vite-web-search.ts`
|
||||
- Prompt templates store: `packages/app/src/stores/promptTemplates.ts`
|
||||
|
||||
## Recent Session Work (2026-03-04)
|
||||
See `session-2026-03-04.md` for details.
|
||||
@@ -0,0 +1,18 @@
|
||||
# Code Mode UI — Future Work
|
||||
|
||||
## After content surfacing is complete, implement:
|
||||
|
||||
### 1. Code Mode Visual Treatment
|
||||
- Colour the message container in orange (`#F7931A`) styling when in code mode
|
||||
- Change header text from "Message AIUI" to "Code"
|
||||
- Visual signal so user knows they're in coding context
|
||||
|
||||
### 2. Design System Context Selection
|
||||
- All design system items should be selectable with a cursor/pointer icon on hover
|
||||
- Selecting a design system item provides that UI context to the code generation
|
||||
- Think of it as "code with this component/token in mind"
|
||||
|
||||
### 3. File Browser / Open File Context
|
||||
- File browser or open file in the content panel
|
||||
- Selected files provide context for coding
|
||||
- Pairs with the design system selection — user picks UI + files as coding context
|
||||
@@ -0,0 +1,66 @@
|
||||
# Session 2026-03-04
|
||||
|
||||
## Completed This Session
|
||||
|
||||
### 1. Chat UX Changes
|
||||
- **History button**: Changed from title-click dropdown to dedicated clock icon in ChatHeader
|
||||
- **Settings modal**: Created `SettingsModal.vue` — Memory + Advanced Settings behind gear icon, glass-card with backdrop blur
|
||||
- **PromptIndex fix**: Reverted to original behavior (current conversation only), fixed broken v-if/v-else chain where StreamingDots broke the template chain
|
||||
- **Chat action buttons**: Wrapped hover icons in proper glass container (`bg-black/60 backdrop-blur-md border border-white/10`) with divider between actions and thumbs
|
||||
|
||||
### 2. iOS HIG Integration
|
||||
- Created `.cursor/rules/15-mobile-ux.mdc` with comprehensive iOS HIG values
|
||||
- Updated CLAUDE.md Mobile UX section
|
||||
|
||||
### 3. Web Search Fix
|
||||
- All SearXNG instances were returning 429, DuckDuckGo rate-limiting
|
||||
- Added Brave Search API as primary backend (`BRAVE_SEARCH_API_KEY` env var)
|
||||
- Expanded SearXNG pool to 8 instances with rotation
|
||||
- Added HTML response guard for captcha pages
|
||||
|
||||
### 4. Content Detection Overhaul (MAJOR)
|
||||
- **Expanded all classifiers** in `contentFiltering.ts`: isNewsQuery, isMusicQuery, isBookQuery, isTVQuery, isPlaceQuery, isWebsitesQuery + response variants
|
||||
- **Added Nostr detection**: `isNostrQuery()`, `isNostrLikeResponse()`
|
||||
- **Added App detection**: `isAppQuery()`, `isAppLikeResponse()`
|
||||
- **Updated `filterTabsByContext()`**: new `hasNostr` + `hasApps` params, nostr/app query priority
|
||||
- **Updated `preferredFirstTab()`**: nostr + app checks
|
||||
|
||||
### 5. Bare Domain Extraction
|
||||
- `extractBareDomainLinks(text)` in contentExtraction.ts
|
||||
- Detects plain domains like "damus.io" not inside markdown/bold/URL patterns
|
||||
- Known TLDs whitelist, file extension blacklist
|
||||
|
||||
### 6. Apps Tab (NEW FEATURE)
|
||||
- **Database**: `packages/app/src/data/apps.ts` — AppEntry interface, ~30 curated apps
|
||||
- Nostr clients: Damus, Primal, Snort, Amethyst, Coracle, Iris, noStrudel
|
||||
- Lightning wallets: Phoenix, Breez, Zeus, Alby, Mutiny, WoS
|
||||
- Bitcoin wallets: Sparrow, BlueWallet, Nunchuk, Coldcard
|
||||
- Privacy: SimpleX Chat, Signal, Mullvad VPN
|
||||
- Node software: Start9, Umbrel, RaspiBlitz, myNode
|
||||
- Dev tools: NDK, nostr-tools, Nak
|
||||
- **Extraction**: `extractApps(text, userQuery)` — keyword matching against DB, surfaces with 1+ match for app/nostr/known-app queries, 2+ for general
|
||||
- **UI**: `AppsGrid.vue` (list with search/category filter), `AppDetail.vue` (gradient header, how-to steps, related apps, external link)
|
||||
- **Wired in**: useContentPanel.ts (panelApps ref, selectedApp, open/close), ContentPanel.vue (registered), PromptIndex badges
|
||||
|
||||
### 7. Slash Command Palette
|
||||
- `/code`, `/nostr`, `/design`, `/search` appear as commands in PromptPalette
|
||||
- Commands section above Templates section with `/slash` prefix styling
|
||||
- Auto-send on select (except `/search` which sets text for query input)
|
||||
- 8px side margins (`left-2 right-2`), no max-height scroll limit
|
||||
- `ChatInput.vue`: simplified `isPaletteMode` — no longer excludes command names
|
||||
|
||||
### 8. App Detection Fix
|
||||
- Queries mentioning known app names (e.g. "start9") now match via `queryMatchesApp` check
|
||||
- Previously required explicit app/nostr query patterns like "what app" or "best wallet"
|
||||
|
||||
## Known Issues / TODO for Next Session
|
||||
- User reported "start9" search shows Brief but Apps tab was empty — FIXED in last commit
|
||||
- The `/design` command was added to palette and ChatWindow handleSend
|
||||
- Consider adding more apps to the curated database over time
|
||||
- The plan file is at `.claude/plans/content-detection-overhaul.md` (all steps complete)
|
||||
|
||||
## Git State
|
||||
- Branch: `overnight/2026-03-03`
|
||||
- Latest commit: `f346992` — feat(chat): slash command palette, action button containers, app detection fix
|
||||
- Previous commit: `84ccdc7` — feat(app): content detection overhaul, apps tab, chat UX, web search
|
||||
- All pushed to origin
|
||||
Reference in New Issue
Block a user