feat: IMAP mail sync with thread-to-contact matching (PRD §6.1)
Real IMAP connection via imapflow library: - Connects to IMAP server (IMAPFlow, TLS on port 993) - Fetches recent messages (configurable limit, default 20) - Extracts: from, fromEmail, subject, date, snippet (200 chars) - Thread-to-contact matching (PRD §6.1): 1. Match sender email against persons table 2. If no person match, extract domain and match against company.website 3. Returns matchedCompany + matchedPerson for each email - Audit-logged (action: crm.mailsync:imap) - Zod validated (host, port, user, password, folder, limit) - 502 on IMAP connection failure with detail - 400 on validation failure Tested: invalid creds → 502 'IMAP connection failed', missing host → 400
This commit is contained in:
1 parent
7acc0c5451
commit
e45b68bb8b
1089 files changed
+260614
No files matched your search
+96
@@ -0,0 +1,96 @@
|
||||
---
|
||||
name: html-ppt-zhangzara-retro-windows
|
||||
description: Retro Windows — Windows 95 chrome:灰色标题栏 / MS Sans Serif / 像素字体 / 满满怀旧。任何应该感觉有意为之地怀旧的 deck:retro gaming / Y2K 美学品牌 / 90 年代风格创作者作品集 / 技术史 talk / 故意 tongue-in-cheek 的 deck。
|
||||
visibility: public
|
||||
mode: template
|
||||
carrier: deck
|
||||
scenario: marketing
|
||||
pattern_source: pattern.html
|
||||
source_priority: skill-first
|
||||
triggers:
|
||||
- "做个 Windows 95 风 deck"
|
||||
- "做个 Y2K 复古 PPT"
|
||||
- "做个 90 年代怀旧风"
|
||||
- "retro-windows"
|
||||
- "zhangzara-retro-windows"
|
||||
- "Retro Windows"
|
||||
- "nostalgic"
|
||||
- "retro gaming pitch"
|
||||
- "Y2K brand"
|
||||
- "html deck"
|
||||
- "html slides"
|
||||
- "zhangzara"
|
||||
od:
|
||||
upstream: "https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/retro-windows"
|
||||
upstream_license: MIT
|
||||
preview:
|
||||
type: html
|
||||
entry: pattern.html
|
||||
design_system:
|
||||
requires: false
|
||||
speaker_notes: false
|
||||
animations: false
|
||||
---
|
||||
|
||||
# Retro Windows
|
||||
|
||||
> Windows 95 chrome: gray title bars, MS Sans Serif, pixel typography, full nostalgia.
|
||||
|
||||
A single self-contained HTML deck — typography, palette, decorative system,
|
||||
and slide vocabulary are all tuned together. Mixing layouts across templates
|
||||
breaks the system; stay inside this one.
|
||||
|
||||
## At a glance
|
||||
|
||||
- **Scheme:** light
|
||||
- **Formality:** low
|
||||
- **Density:** medium
|
||||
- **Slides in demo:** 10
|
||||
|
||||
## Best for
|
||||
|
||||
Anything that should feel knowingly nostalgic: retro gaming, Y2K-aesthetic brands, creator portfolios with a 90s vibe, tech-history talks, deliberately tongue-in-cheek decks. A great choice anywhere a playful retro reference is the entire point.
|
||||
|
||||
## Avoid for
|
||||
|
||||
Decks that need to read as modern, elegant, or institutionally credible — the Win95 chrome will always read as a costume.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Use `pattern.html` only as a secondary pattern reference.** Do not clone it wholesale; extract section rhythm, layout pattern, and interaction behavior, then rebuild for the current brief.
|
||||
2. **Replace placeholder content** with the user's real headlines, body copy,
|
||||
numbers, names, dates, and section labels. Match existing dimensions when
|
||||
swapping image placeholders.
|
||||
3. **Preserve the design system.** Never substitute fonts, recolor the palette,
|
||||
restructure the layout grid, or strip decorative elements (corner brackets,
|
||||
paper grain, geometric shapes, illustrated SVGs). They are part of the
|
||||
identity.
|
||||
4. **Adjust deck length by duplicating layouts.** If the user has more content
|
||||
than the demo holds, duplicate an existing slide of the most appropriate
|
||||
layout. If less, drop slides from the bottom. Update page-number labels.
|
||||
5. **Designing missing layouts:** if a slide needs a layout the template
|
||||
doesn't have, design it from scratch using the same fonts, palette,
|
||||
decorative vocabulary, spacing rhythm, and component grammar — never bail
|
||||
to a different template.
|
||||
6. **Keep the navigation runtime as shipped.** If the deck ships an
|
||||
`assets/deck-stage.js` or inline keyboard handler, leave it intact.
|
||||
|
||||
## Output contract
|
||||
|
||||
Emit between `<artifact>` tags:
|
||||
|
||||
```
|
||||
<artifact identifier="zhangzara-retro-windows" type="text/html" title="Deck Title">
|
||||
<!doctype html>
|
||||
<html>...</html>
|
||||
</artifact>
|
||||
```
|
||||
|
||||
## Source & license
|
||||
|
||||
Vendored from upstream MIT-licensed
|
||||
[`zarazhangrui/beautiful-html-templates`](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/retro-windows).
|
||||
|
||||
The full upstream MIT license text — including the original copyright notice — ships in this skill at
|
||||
[`LICENSE`](./LICENSE) and must be redistributed alongside any copy of `pattern.html`,
|
||||
`template.json`, or any vendored `assets/` runtime. See `template.json` for the upstream metadata snapshot.
|
||||
Reference in new issue
Block a user