Repository navigation
v0.0.5
·
89 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Changelog
- 1f07e82 Add Apache-2.0, REUSE.toml, and CODEOWNERS
- 8dcef80 Add Executive Summary; mark location config done
- df6a6ce Add GUID to BTP Subaccount and tool description
- ced67e5 Add SAP Developer Ecosystem and update CLI
- b0cf098 Add external APIs consumption reference
- 7f74f55 Add internationalization support for various commands and messages
- 2b82963 Add privacy statement and update README
- 3350964 Add third-party dependencies reference
- aeb7661 Add tutorial details to backlog document
- e4326b7 Add tutorial inline-images plan and VitePress spec
- acb6a17 Brew cask update for sap-devs version v0.0.4
- f8f0104 Enhance locale normalization in stripTag function
- b84a7e9 Mark BTP & structured context tasks done
- 2a045ca Mark Inject Enhancements TODO as done
- ad2fe9b Mark TODO items done and trim MCP proposal
- ec428ef Mark
sap-devs eventsTODO as done - 245a1b3 Mark tutorial instructor phase as done in TODO
- 50a77a2 Merge branch 'main' into feature/news-resilience
- 8d67096 Merge branch 'main' of https://github.com/SAP-samples/sap-devs-cli
- e2016f7 Merge branch 'main' of https://github.com/SAP-samples/sap-devs-cli
- 16c1bad Merge branch 'main' of https://github.com/SAP-samples/sap-devs-cli
- c45fe2a Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- f8498a4 Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- ced95f1 Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- cd05c56 Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- c06f150 Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- dadf44b Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- 7125253 Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- 4a08c04 Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- 50c22e5 Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- cde7f42 Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- 5ce532a Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- 9b32f06 Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- 25e7e68 Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- a680c5b Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- 23a77d6 Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- f6b58c4 Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- 4897d1f Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- 7dac43d Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- 35544b9 Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- 2c6def8 Merge branch 'main' of https://github.tools.sap/developer-relations/sap-devs-cli
- 0501fcd Merge pull request #1 from SAP-samples/migrate/github-com-module-path
- 32e5983 Merge pull request #10 from I347491/tipwork
- 09d1018 Merge pull request #11 from developer-relations/feat/dynamic-content-injection
- 36e655a Merge pull request #12 from developer-relations/feat/html-content-conversion
- f708aa3 Merge pull request #13 from developer-relations/feat/inject-size-budgeting
- af641fc Merge pull request #14 from developer-relations/feature/base-layer
- 5ec4feb Merge pull request #15 from developer-relations/feature/builtin-profiles
- 53347be Merge pull request #16 from developer-relations/feature/additive-content-layers
- d4bed27 Merge pull request #17 from developer-relations/feat/base-pack-preamble
- b7f097a Merge pull request #18 from developer-relations/feat/base-pack-preamble
- 17867f3 Merge pull request #19 from developer-relations/feat/config-location
- 69ebc84 Merge pull request #2 from SAP-samples/feature/sync-progress-ui
- 7c7427b Merge pull request #20 from developer-relations/feat/hook-system
- 88a553d Merge pull request #21 from developer-relations/feat/tip-rotation
- 0c05249 Merge pull request #22 from developer-relations/feat/inject-uninstall
- bb9b9bd Merge pull request #23 from developer-relations/feat/inject-status
- 855877d Merge pull request #24 from developer-relations/feat/news
- a91d1a6 Merge pull request #25 from developer-relations/feat/news
- 0c4270c Merge pull request #26 from developer-relations/feat/influencers
- d886ea1 Merge pull request #27 from developer-relations/feat/events
- 86f3979 Merge pull request #28 from developer-relations/feat/events
- 7d32a82 Merge pull request #29 from developer-relations/feat/khoros-events
- 05f1c99 Merge pull request #3 from SAP-samples/feature/os-scheduler
- 1f420a7 Merge pull request #30 from developer-relations/feat/new-adapters
- 848548a Merge pull request #31 from developer-relations/feat/samples
- 2e3d62f Merge pull request #32 from developer-relations/feat/youtube-integration
- f487f6a Merge pull request #33 from developer-relations/feat/discovery-center
- d251049 Merge pull request #34 from developer-relations/feat/tutorials
- 24258ff Merge pull request #35 from developer-relations/worktree-feat+learning-journeys
- 99b4604 Merge pull request #4 from SAP-samples/feature/tray-lifecycle
- 0e582ae Merge pull request #5 from SAP-samples/feature/wails-tray
- 5cb2e74 Merge pull request #6 from SAP-samples/feature/gui-config-editor
- 8770c48 Merge pull request #7 from SAP-samples/feature/news-resilience
- 66524f2 Merge pull request #8 from SAP-samples/worktree-feature+mcp-server-improvements
- b9a37a2 Merge pull request #9 from SAP-samples/fix/mcp-quality-improvements
- 97ea358 Remove finished items from TODO
- 6063ca0 Remove obsolete HTML files and update CLAUDE.md with SAP Developer Context
- b2b398d Remove pruned worktree aritfact
- f6d0884 Resolve MCP-to-MCP orchestration; add analysis
- 974ea8f Scoop update for sap-devs version v0.0.4
- cffe80b Support BTP TargetHierarchy array format
- 5bd061d TODO - can AI be used as a content instructor for tutorials or CodeJams
- 64f77d8 build: copy cities.json into tray binary data dir at build time
- 539e0d0 chore(deps): update Go dependencies
- 8c1ce4a chore(schema): add hook.schema.json and wire in VS Code settings
- 2abde3e chore: add html-to-markdown/v2 and cascadia dependencies
- 322a660 chore: fix go.mod direct/indirect markers after convert.go creation
- 97163b5 chore: ignore sap-devs-news build artifact
- a7e0c8c chore: mark inject --status as done in TODO.md
- b0942f9 chore: mark inject --uninstall as done in TODO.md
- 89499ae chore: migrate module path to github.com/SAP-samples/sap-devs-cli
- 05d1c00 chore: redirect to github.com/SAP-samples/sap-devs-cli
- 1301f9d chore: restore README.md after migration redirect
- 361ef3d chore: update news episode index
- 5b39b23 chore: update news episode index
- 6a7c711 chore: update news episode index
- 2b5a925 chore: update news episode index
- c5e00ca chore: update news episode index
- a0d1462 chore: update news episode index
- e5d2092 chore: update news episode index
- fadfd87 ci: add tray binary build and release workflow
- d429ed2 content(base): add preamble.md with AI agent priority instruction
- 22cac3a content(base): add tip-on-session-start hook; wire hook_config in claude-code adapter
- 498a47e content(cap): remove Agent Instructions section (moved to base preamble)
- 786e603 content(cap): update sync:fetch marker with format, selector, and max_lines=1000
- 475732f content(tapestry): finalize consolidation of tool-injection content and add AI-priority preamble
- 54b76ba content: add curated discovery.yaml for base, cap, btp-core, abap packs
- 5c75cc8 docs(TODO): add inject enhancements for uninstall and status commands
- ef6e7f4 docs(adapter): clarify budget guard behaviour with base packs
- 2d6363a docs(content): document additive layers feature and editor schema setup
- 7c9468e docs(content): document base pack field and base layer authoring guidance
- 534e54e docs(content): document built-in all and minimal profiles
- c0e1a5d docs(content-authoring): document preamble.md — structure, order, constraints, layer rules
- 60fed09 docs(init): clarify detect keyword is intentional English-only sentinel
- c02048a docs(plan): adapter-specific rendering implementation plan
- 79790be docs(plan): add base layer implementation plan
- 5387a9f docs(plan): add built-in profiles implementation plan
- f56571e docs(plan): add hook system implementation plan
- fe9bd3a docs(plan): additive content layers implementation plan
- aef488f docs(plan): base pack preamble implementation plan
- 1f3d3b9 docs(plan): fix blocking review issues in base layer plan
- 936887c docs(spec): adapter-specific rendering design
- f7b9df0 docs(spec): add base layer design
- 4e9a722 docs(spec): add built-in profiles design (all and minimal)
- cfdf6b8 docs(spec): add hook system design spec
- b2b453f docs(spec): additive content layers design
- 20fb5cc docs(spec): address spec review feedback on preamble design
- 1c21932 docs(spec): base pack preamble and agent instructions consolidation
- a4cf380 docs(spec): fix markdown lint warnings in base layer design
- d05b0cc docs(spec): fix review issues in built-in profiles design
- fc0acf2 docs(todo): remove completed adapter-specific rendering item
- 10fdaba docs: add BTP active context detection design spec
- 637e5d4 docs: add BTP active context detection implementation plan
- 7136aa6 docs: add Claude Code setup guide, MCP server docs, and CLAUDE.md refinements
- 4f44657 docs: add Discovery Center integration design spec
- b9c5723 docs: add Discovery Center integration implementation plan
- 2903dc5 docs: add Friday Developer News hook design spec
- 7a578cb docs: add Friday news tip override design spec
- 875f05c docs: add GUI config editor design spec
- 2e31e2c docs: add GUI config editor implementation plan
- 58506ac docs: add MCP server design spec
- d39cc7c docs: add MCP server improvements design spec
- ed1f68d docs: add MCP server improvements implementation plan
- 86e8ba5 docs: add Phase 2b design spec (reordering + bulk editing)
- 03a9194 docs: add Phase 2c content creation wizard design spec
- bd1b88a docs: add What's New injection block design spec
- 24a2e49 docs: add What's New injection block implementation plan
- 5b27f32 docs: add YouTube integration design spec
- f9167b1 docs: add YouTube integration implementation plan (12 tasks)
- ff6f263 docs: add config location feature spec
- 6ed1233 docs: add config location implementation plan
- 4c57e98 docs: add constraints injection design spec
- 82d1044 docs: add constraints injection implementation plan
- 9b0ad51 docs: add content editing UI Phase 1 design spec
- 8e35b36 docs: add content editing UI Phase 1 implementation plan
- d2712b8 docs: add content-authoring guide covering markers, agent instructions, and token budget
- 123617a docs: add design spec for MCP CLI wrappers (BTP + CF)
- 3f4a9e5 docs: add design spec for Windsurf and Gemini Code Assist adapters
- b098531 docs: add design spec for tip install/uninstall and internal/shellhook
- 7432d81 docs: add dynamic content injection design spec
- aa6f13a docs: add dynamic content injection implementation plan
- 10b2473 docs: add dynamic injection design spec
- a3315fa docs: add dynamic injection implementation plan
- 8ca0c0d docs: add error pattern library design spec
- 986b902 docs: add error pattern library implementation plan
- 6207c2b docs: add events Phase 2 implementation plan
- 9f7e4ed docs: add events command Phase 1 implementation plan
- c3eade1 docs: add events command design spec and content editing UI backlog
- 1b5de8c docs: add events command to CLI commands table
- 5985782 docs: add html content conversion design spec
- 3c310e4 docs: add html content conversion implementation plan
- 9e6022b docs: add implementation plan for Windsurf and Gemini Code Assist adapters
- 3a76bfb docs: add implementation plan for tip install/uninstall
- f6f1a6f docs: add implementation plans for Friday tip override and news hook
- 590eed1 docs: add influencers command design spec
- 7c1c4ea docs: add influencers command implementation plan
- 21339e9 docs: add influencers command to CLI commands table
- 56330ef docs: add inject --status design spec
- b33330b docs: add inject --uninstall design spec
- 91cc248 docs: add inject size budgeting design spec
- 862656a docs: add inject size budgeting implementation plan
- 62c2e6c docs: add inject verbosity modes design spec
- c2b3759 docs: add learn command design spec
- 4eea4a0 docs: add learn command implementation plan
- ab2c6e2 docs: add learning command to CLI reference
- d498688 docs: add learning command to CLI reference
- a1a9eeb docs: add learning journeys architecture section to CLAUDE.md
- fbc4b9f docs: add learning journeys feature design spec
- a7abc64 docs: add learning journeys feature design spec
- 0d5b2f7 docs: add learning journeys implementation plan
- c70a126 docs: add learning journeys implementation plan
- 498bf95 docs: add news command design spec
- e1956e4 docs: add news command implementation plan
- 9212891 docs: add project detection and health check design spec
- f9dd8d4 docs: add project detection and health check implementation plan
- 30828cb docs: add samples feature to CLAUDE.md and content authoring guide
- 2febe61 docs: add scratch/session context design spec
- 1543fb2 docs: add scratch/session context implementation plan
- 953ae1d docs: add service commands to CLI reference and architecture
- 9718841 docs: add structured context.md conventions design spec
- 51101fa docs: add structured context.md implementation plan
- 8529c5b docs: add sync progress UI design spec
- 9496b45 docs: add sync progress UI implementation plan
- 11cb201 docs: add system tray & GUI companion design spec
- 01826c9 docs: add system tray implementation plans (3 parts)
- cfef23d docs: add tray binary architecture to CLAUDE.md
- d8c2d9d docs: add tray commands and architecture to CLI reference
- e46a920 docs: add tutorial guided execution tools and Phase 3 analysis to mcp-server.md
- 341535c docs: add tutorial guided execution tools and Phase 3 analysis to mcp-server.md
- f950e11 docs: add tutorial image URL resolution design spec
- 359b44d docs: add tutorials feature design spec (Phase 1)
- d6c9664 docs: add tutorials implementation plan
- 1eec968 docs: address round 2 spec review feedback for inject verbosity modes
- 9e88e43 docs: address spec review feedback for BTP context detection
- cfddd9c docs: address spec review feedback for What's New injection design
- 0eacbc4 docs: address spec review feedback for constraints injection
- 65b9ec5 docs: address spec review feedback for error pattern library
- efc1d70 docs: address spec review feedback for inject verbosity modes design
- abba113 docs: address spec review feedback for learning journeys
- a908f96 docs: address spec review feedback for learning journeys
- e435a62 docs: address spec review feedback for new adapters design
- 026d37e docs: address spec review feedback for project detection design
- 41ee638 docs: address spec review feedback for scratch/session context
- fe2f677 docs: address spec review findings for MCP improvements
- 38d2306 docs: address spec review issues for YouTube integration
- edb62ff docs: clarify additive_position omission and findSchemasDir location in Phase 2c spec
- ebee085 docs: clarify failure behaviour — preserve cached expansion vs first-fetch fallback
- db372c4 docs: clarify field type coverage, clone logic, and selection clearing in Phase 2b spec
- a4b5035 docs: clarify inject-status StatusRow is per adapter+target pair
- 88d426b docs: clarify lcs returns byte length not character count
- ace333b docs: clarify progress bar arithmetic for hidden/conditional phases
- 73b6abe docs: document --stats flag, max_tokens adapter field, and overlaps pack field
- 043115a docs: document Friday tip override, newsPlaylistURL, and Community User-Agent
- 9cf2ad9 docs: document discovery command and discovery.yaml format
- 603896c docs: document hook.yaml authoring, hook_config adapter field, and CLI commands table
- 8691751 docs: document inject --status, --verbose, --json flags
- 38ced38 docs: document inject --uninstall flag in user guide and developer guide
- 9cbf6ed docs: document news command in CLAUDE.md and developer guide
- d3b42d4 docs: document news hook subcommand and Friday reminder hook
- 3bc8efb docs: document tip install and tip uninstall commands
- 712d469 docs: document tutorials command and architecture
- 6b288a8 docs: document videos command and youtube.yaml format
- 6fde628 docs: enhance CLAUDE.md with adapter system details and dynamic content expansion
- 7665e01 docs: fix MCP server plan from review
- df7c7b8 docs: fix MCP server spec issues from review
- f29004f docs: fix Packs type to []*content.Pack in MCP server spec
- b737121 docs: fix config location spec after review
- a4b7483 docs: fix description trim unit to Unicode characters
- b174669 docs: fix double pointer and missing fmt import in sync progress plan
- d31f1ba docs: fix dynamic injection spec after review
- 93989db docs: fix inject-status spec — TrimPacks in render, clarify staleness extraction, i18n append_warning key
- b8d5dab docs: fix inject-status spec — replace-file preamble newline, renderSectionContent location
- 6ac9422 docs: fix iteration 2 spec review issues for YouTube integration
- 555b37b docs: fix learn spec per review — correct API signatures, add validation
- 913c18c docs: fix markdown lint warnings in news command spec
- ef67b31 docs: fix round-2 spec review findings
- faec51a docs: fix spec issues from review loop
- d20323a docs: fix spec review issues in Phase 2c design
- 1ec4a35 docs: fix tutorials spec — variable default branches, repo-groups.json format
- e0d7d4a docs: mark 'sap-devs learn' feature as completed
- 5d2281f docs: mark Friday SAP Developer News promotion and hook reminder as completed
- f17833c docs: mark adapter TODOs as done/skipped
- 7e4b6b2 docs: mark completion of configurable tip rotation frequency and uninstall feature
- 824ec36 docs: mark doctor MCP TODO as done
- 1a82d2b docs: mark influencers command as completed
- 4b34db1 docs: mark scheduler and tray as done, document in developer guide
- b8e7301 docs: note duplicate-prefix behavior in ScanOtherSections
- 368ce11 docs: refine tip install/uninstall spec based on review feedback
- 287dd73 docs: revise sync progress UI spec after review
- 984e802 docs: specify concrete sync guard logic for YouTube integration
- 690e024 docs: update CLAUDE.md and context.md for MCP server improvements
- 0f2643e docs: update MCP server documentation for 32 tools and inline images
- 59c705f docs: update TODO.md to mark YouTube and SAP Discovery Center integrations as completed
- 7e55357 docs: update TODO.md to reflect completion of editor features
- 1915d82 docs: update TODO.md with completed
sap-devs newscommand and add Friday Developer News hook reminder - 291849a docs: update content-authoring with format/selector attributes and pack author guidance
- 9c48cc0 docs: update html conversion spec with reviewer fixes
- 495984e docs: update inject --uninstall spec after review iterations
- d1cd142 docs: update server instructions quote to match expanded coverage
- bb6f3bb docs: update status of Windsurf and Gemini Code Assist adapters to DONE
- 309ea4e feat(TODO): enhance configuration options and context detection for AI agents
- d1653cb feat(adapter): add HookConfig struct and hook_wire.go
- 247becf feat(adapter): add MaxTokens field for per-adapter budget
- 9b4d968 feat(adapter): add RunResult return type to engine.Run and update all call sites
- 9afc3c2 feat(adapter): add deleteFile helper
- ace6d94 feat(adapter): add file-export hybrid adapter type (ExportFileAndClip)
- cd3d6b4 feat(adapter): add removeSection with dry-run and newline collapse
- 197dbc7 feat(adapter): add replace-file write mode with preamble support
- 8d45822 feat(adapter): add runFileUninstall and uninstall dispatch to engine.Run
- f289f45 feat(adapter): add sectionStatus type and findSection helper
- 50cd023 feat(adapter): refactor Engine to render per-adapter with budget trimming and stats
- 7956bbb feat(adapter): rename ClipFormat to Format; add MaxBytes, ExportPath, Preamble
- 577d0b7 feat(adapter): thread DynamicContext through Options into RenderContext
- cf70a98 feat(adapter): wire FormatOutput, MaxBytes budget, and file-export in engine
- 5d6e973 feat(adapters): add Gemini Code Assist file-inject adapter
- fc1381c feat(adapters): add Windsurf file-inject adapter
- d207152 feat(adapters): fix paths, add frontmatter, file-export for ChatGPT, remove Cody
- a772409 feat(build): add sap-devs-tray build process and update .gitignore
- 1a312bf feat(cmd): add config location subcommand with --detect flag
- 63d23ca feat(cmd): add discovery command with missions list, search, open
- bb5e45e feat(cmd): add discovery guidance tree, show, open subcommands
- 7d1b108 feat(cmd): add discovery services list, search, open subcommands
- 90be3be feat(cmd): add hook list/install/uninstall/status command
- 71d2203 feat(cmd): add inject --uninstall flag with mutual exclusion and summary output
- 1e01e1d feat(cmd): add videos command with list, search, open subcommands
- 27f8d69 feat(cmd): profile show prints built-in note for all/minimal profiles
- 3ca5daa feat(cmd): wire --stats flag and per-adapter packs/profile into engine
- a0715c8 feat(cmd): wire GatherDynamic into inject for dynamic runtime context
- 989ab50 feat(config): add Location field with omitempty
- 67afb64 feat(config): add TipConfig struct with Rotation field
- 9c51443 feat(config): add YouTube sync TTL, --service flag for token, config show update
- f6e898b feat(config): add tip-rotation subcommand and config show entry
- b32ce9c feat(content): LoadPack prefers context.expanded.md over context.md when present
- e059860 feat(content): LoadPacks returns base packs only for minimal profile
- 0074ab3 feat(content): add Additive and AdditivePosition fields to Pack
- 8b8fba5 feat(content): add Base field to Pack struct and pack.yaml schema
- 692f340 feat(content): add BuiltinProfiles and IsBuiltinProfile to profile.go
- afe1038 feat(content): add DynamicContext types
- 99ff07b feat(content): add FlattenHooks and FindHookDef helpers
- c4fc44f feat(content): add FormatOutput and TrimToBytes
- fdedebe feat(content): add HookDef struct and load hook.yaml in LoadPack
- 48f3fa1 feat(content): add Overlaps field to Pack for deduplication
- 9ee50b6 feat(content): add PreambleMD field; load preamble.md in LoadPack
- 1b3ae09 feat(content): add TrimPacks for deduplication and budget enforcement
- 6c0c942 feat(content): add YAML schemas and VS Code editor wiring
- 75aa857 feat(content): add YouTubeSource and Video structs, load youtube.yaml in LoadPack
- cac648c feat(content): add base pack with shared SAP ecosystem entry points
- 547f234 feat(content): add discovery ref types, loader, and merge support
- 27543dc feat(content): add flatten/collect helpers for discovery refs
- f79d41f feat(content): add merge helpers for additive content layers
- b2fbe4a feat(content): add mergeYouTubeSources for additive pack layer support
- aedc0bc feat(content): add youtube.yaml for base and cap packs with JSON schema
- c954f1d feat(content): apply additive merge in LoadPacks
- a9e716a feat(content): exempt base packs from TrimPacks budget and deduplication
- 77b367c feat(content): implement Pack.MergeWith for additive layer merging
- 95dd529 feat(content): inject built-in profiles in ContentLoader.LoadProfiles
- 9f2423e feat(content): pin base packs first in LoadPacks output
- 6e4e09d feat(content): render base pack preamble before ContextMD in RenderContext
- 8793b22 feat(content): render dynamic context section in RenderContext
- e5702a6 feat(content): short-circuit FindProfile for built-in profile IDs
- 5f020df feat(content/cap): add feb26 release notes marker and agent instructions
- e77c044 feat(credentials): add service-keyed storage for YouTube API keys
- 22ad21d feat(discovery): add API response types for Discovery Center OData
- 6fe6ce6 feat(discovery): add OData V2 client for Discovery Center APIs
- dc61938 feat(discovery): add TTL-based cache layer with generics
- fd5e477 feat(discovery): add resolve/enrich/filter orchestration layer
- f525a41 feat(docs): enhance TODO with built-in profiles and background automation plans
- ea10be1 feat(docs): enhance developer guide and TODO with config editor details
- 706137a feat(docs): expand TODO with release, distribution, and code signing plans
- 346c499 feat(docs-site): add CDS syntax highlighting via TextMate grammar
- 9a6418e feat(docs-site): mascot branding, hero redesign, mermaid diagrams
- d985800 feat(dynamic): implement GatherDynamic for runtime context collection
- 22c7767 feat(editor): add reordering and bulk editing to content editor (#50)
- d1852bc feat(editor): add undo/redo and pre-save diff review to content editor (#49)
- d21033f feat(events): add EventType and EventInstance structs, loading, and merge
- 0a3269b feat(events): add EventsConfig sub-struct with distance and notification settings
- 612da99 feat(events): add Haversine distance calculation
- 703070b feat(events): add Phase 2 i18n keys (export, notify, config)
- 8c8b01a feat(events): add RSS fetching and parsing for events
- b35dedb feat(events): add Resolve, FilterByLocation, and MergeAndSort
- 9ffde2e feat(events): add URL column to event table and update translations feat(build): create build script for sap-devs.exe fix(.gitignore): correct entry for sap-devs-news
- e48e1a0 feat(events): add calendar export (iCal, vCalendar, Google Calendar URL, Outlook URL)
- a5874f2 feat(events): add config events subcommands for radius and notification settings
- b56a1b7 feat(events): add content helper functions for events
- 93e895e feat(events): add cross-platform OS notification dispatch
- d963981 feat(events): add embedded city database with geocoding lookup
- 8895d87 feat(events): add events command with list, open, types, and filtering
- 8513a80 feat(events): add export, hook, and notify subcommands
- bd1c745 feat(events): add file-based event cache
- f80ce0a feat(events): add i18n keys for events command (en, de)
- a40225e feat(events): add seed data, JSON schemas, and VS Code wiring
- 13fa223 feat(events): add upcoming event detection and hook message formatting
- da414bb feat(events): integrate events RSS caching into sync
- 6afd208 feat(events): switch CodeJam events from broken RSS to Khoros LiQL API
- d28cb34 feat(i18n): add discovery command translations for en and de
- 8816b3d feat(i18n): add inject.uninstall.* keys for en and de
- df4fa2b feat(i18n): add location keys; renumber init steps 4-5 to 5-6
- 51bd38d feat(i18n): add tip_rotation keys to en and de catalogs
- 65e7dd5 feat(influencers): add Influencer struct, Pack field, and YAML loading
- 393e4b0 feat(influencers): add helper functions for flatten, filter, find, random
- d67254b feat(influencers): add i18n keys for influencers command (en, de)
- 539c3b6 feat(influencers): add influencers command with list, open, and filtering flags
- e8f0b4e feat(influencers): add seed data, JSON schema, and VS Code wiring
- 50d4dea feat(init): add Step 4 location collection to setup wizard
- aef3523 feat(inject): add staleness check, --sync/--no-sync flags, and inline sync with pack reload
- f1c326b feat(learning): add CLI commands (list, search, show, open)
- 0fce292 feat(learning): add cache layer
- 289ff54 feat(learning): add catalog fetcher
- ae22f3b feat(learning): add context injection of featured learning journeys
- d79ebc6 feat(learning): add i18n translation keys
- f063546 feat(learning): add i18n translation keys
- 46c8961 feat(learning): add local search and filters
- c9bdbf1 feat(learning): add pack content files and JSON schema
- 780c809 feat(learning): add pack content files and JSON schema
- 3e467ba feat(learning): add pack integration types, merge logic, and content helpers
- b7f78e2 feat(learning): add search API client
- 8bcdfd7 feat(learning): add sync TTL config field
- 9cd6610 feat(learning): add sync TTL config field
- a19ecda feat(learning): add sync integration for catalog fetch
- 1e00111 feat(learning): add types and constants
- 3ec45f0 feat(mcp): add ResultEnvelope type and wrapResults helper
- 4ed11a2 feat(mcp): add check_tools and check_project tools
- 81b9a87 feat(mcp): add get_news_detail tool with structured episode parsing
- 1823982 feat(mcp): add search_events tool
- 86010e3 feat(mcp): add search_videos and search_discovery tools
- 29be373 feat(mcp): update all existing tools with envelope, limit, enriched descriptions
- 3f0c39d feat(mcp): update content tools with envelope, verbosity, structured tip
- 5dcccb1 feat(mcp): update server instructions and add Cwd to Deps
- eba138e feat(news): add resilient multi-layer fetching with cache and retry
- e00b39e feat(release): add Windows code signing and package manager publishing
- f8c180d feat(samples): add JSON schema and VS Code mapping
- e474ecb feat(samples): add Sample struct and pack loading
- ddc1ca6 feat(samples): add content helpers with tests
- f0b3623 feat(samples): add i18n strings for samples command
- 4a90fd0 feat(samples): add initial CAP sample data
- 2f6714b feat(samples): add samples command with list/search/open/clone
- 2b7810e feat(samples): add samples merge logic with tests
- a7981dd feat(samples): implement code sample pinning with samples.yaml and CLI commands
- 941225f feat(samples): inject canonical patterns section into rendered context
- a0799e7 feat(schema): add discovery.yaml JSON schema and VSCode wiring
- d6b9a62 feat(service): add Linux systemd timer scheduler implementation
- bd1be45 feat(service): add Scheduler interface and Status type
- b4e5b48 feat(service): add Windows Task Scheduler implementation
- 3ddc637 feat(service): add macOS launchd scheduler implementation
- 0056a08 feat(service): add service install/uninstall/status CLI commands
- 808f8d3 feat(service): add service_interval config key with 6h default
- d3254e1 feat(sync): add Discovery Center data to sync flow
- 4591947 feat(sync): add FetchMarker with line/token truncation
- 588489d feat(sync): add Format and Selector fields to Marker struct
- 79afa48 feat(sync): add marker scanner and expander (ScanMarkers, ExpandMarkers)
- cb28446 feat(sync): add versioned SyncState with migration from flat format
- 7a1140e feat(sync): export MostRecentSync for dynamic injection
- 33f7c5c feat(sync): extract runSync helper; add Phase 2 marker expansion with Bubbletea progress
- e583aef feat(sync): implement convertContent helper for HTML format conversion
- caf33e7 feat(sync): migrate Engine to SyncState; add SetPackHasMarkers, RecordMarkerState, GetMarkerState
- a81d8bd feat(sync): split archive/independent categories, add YouTube sync phase 4
- 5db726d feat(sync): unified progress UI with Bubbletea phase list, progress bar, and TTY fallback
- 69c54e1 feat(sync): wire convertContent into FetchMarker; truncation now applies after conversion
- 1808948 feat(theme): add SAP Fiori Horizon Evening dark theme (#47)
- 187d4c9 feat(theme): add comprehensive guide for creating theme variants from SAP Fiori Horizon styles
- fbbd78c feat(tip): add --markdown and --plain output flags
- 66e8ca4 feat(tip): add tipSeed helper, --new flag, and configurable rotation
- fbdcbba feat(tray): add Config button to dashboard panel via open-config API
- 7539239 feat(tray): add Joule theme variant with configurable theme switching
- b30e1d3 feat(tray): add cities search, languages list, and location detect APIs
- 14a3dba feat(tray): add config API handlers for read, write, validate
- f632240 feat(tray): add config editor CSS styles
- c07b67d feat(tray): add config editor HTML with Fiori panel layout
- 6f83935 feat(tray): add config editor JavaScript (form logic, typeahead, validation, save)
- d08d2b4 feat(tray): add config window (520x700) and Config menu item
- 1565216 feat(tray): add service status, install/uninstall, and autostart APIs
- 70360b0 feat(tray): add tray install/uninstall/start/stop/status CLI commands
- 66bcd39 feat(tray): add tray_autostart config key
- 28e3576 feat(tray): add trayctl manager for download, verify, start, stop
- 89b348c feat(tray): redesign dashboard UI, add live sync log and tool detection
- e703d83 feat(tray): update tray binary during sap-devs update
- d03af51 feat(tray-binary): add Fiori dashboard with Fundamental Styles theming
- d00b9c8 feat(tray-binary): add embedded HTTP server with session token auth
- ee97761 feat(tray-binary): add shared state reader for dashboard
- 0506150 feat(tray-binary): initialize Wails v3 module with skeleton main
- 1d8d437 feat(tray-binary): wire Wails v3 system tray with webview panel
- 50d4c89 feat(tutorials): add GitHub client for repo list, tree, and content fetching
- d9a4407 feat(tutorials): add TutorialRef helper functions with tests
- 6d620df feat(tutorials): add TutorialRef struct and LoadPack integration
- 6ec9005 feat(tutorials): add i18n keys for tutorial commands
- 5357d14 feat(tutorials): add interactive step-by-step TUI
- df68e80 feat(tutorials): add markdown parser with v1/v2 support
- e338271 feat(tutorials): add optional developers.sap.com API enrichment
- 880e870 feat(tutorials): add progress tracking
- de5156f feat(tutorials): add schema, VS Code wiring, and initial curated tutorials
- e05b281 feat(tutorials): add search and filtering
- 9176b9e feat(tutorials): add tutorial list/search/show/open commands
- 4020a99 feat(tutorials): add types and cache layer
- a5f4b1a feat(tutorials): enhance tutorial parsing and execution with branch support refactor(tutorials): improve error handling for unavailable repositories chore(youtube): remove deprecated playlists and clean up YAML files test(tutorials): add tests for batch JSON extraction and tutorial parsing
- 032cc89 feat(tutorials): wire tutorials sync with TTL, incremental fetch, and enrichment
- 3d6e64a feat(ui): add Bubbletea inline progress model for marker expansion
- 06d1f40 feat(ui): add RunSyncProgress entry point and plain text fallback
- a025775 feat(ui): add sync progress Bubbletea model with phase list and progress bar
- 465b773 feat(videos): add cache and helper functions for video resolution
- 1d6df14 feat(youtube): add Resolve function with API v3/RSS/video dispatch
- 2221b33 feat(youtube): add YouTube Data API v3 client with parsing and pagination
- a6c4eee feat(youtube): extend Episode struct with Duration and Tags fields
- f049c97 feat: VitePress documentation site with SAP Fiori styling (#15)
- 044cffd feat: What's New injection block after sync (#42)
- e930b3a feat: add "Phone a Friend" feature for expert recommendations based on user queries
- 4722cfb feat: add 11 MCP tools for CF and BTP CLI inspection (26 total) (#11)
- 802eea2 feat: add Status() method to Engine
- 83f1460 feat: add StatusRow, SectionInfo, EstimateTokens, ScanOtherSections
- 345d80f feat: add constraints.md injection per pack (#38)
- 33e22f5 feat: add context add/list/clear for ephemeral project scratch notes (#41)
- f71d96a feat: add dynamic "all" profile to include all packs in content layers
- 38d10b9 feat: add error pattern library with known_errors.yaml per pack (#40)
- 1ea6640 feat: add formatFridayTip and staticFridayTip helpers with tests
- 78818ab feat: add inject --status command with --json and --verbose flags
- 094641a feat: add inject.status i18n keys (en + de)
- c8ee303 feat: add internal/community package for SAP Community RSS and post extraction
- 0745fbc feat: add internal/news correlator package
- 5090d32 feat: add internal/youtube package for playlist RSS parsing
- 5b3f08b feat: add news hook command with Friday reminder message
- 2c5401c feat: add renderSectionContent helper to Engine
- 77924f3 feat: add sap-devs learn command (#37)
- 720c649 feat: add sap-devs news command with list, open, search, and read subcommands
- f49ea81 feat: add security reviewer guidelines, release notes generation, and MCP server configuration
- 1488b47 feat: add skill installation via hook install command (#14)
- b00d97e feat: add tip install and tip uninstall subcommands
- deaf04e feat: add tutorial guided execution MCP tools (Phase 2) (#12)
- 8d21621 feat: built-in MCP server (sap-devs mcp serve) (#48)
- 6c471ad feat: content creation wizard (Phase 2c) (#51)
- 85719e0 feat: content editing UI Phase 1 — TUI editor with schema-driven value help (#46)
- 923d00a feat: detect BTP subaccount and CF org/space at inject time (#44)
- 462a7b1 feat: enhance content editing capabilities and introduce project health check command
- ff0016d feat: implement
sap-devs inject --statuscommand with JSON and verbose output options - fcdc42d feat: implement schema validation logic with error handling
- 91f187a feat: implement shellhook.Add with full-line duplicate detection
- e8aa189 feat: implement shellhook.Remove with full-line matching
- 10f3623 feat: inject verbosity modes with semantic section tagging (#43)
- 9117274 feat: inline tutorial images in MCP server responses (#16)
- 3d6f995 feat: mark project-aware context detection on inject as completed
- 0a61d17 feat: override tip with SAP Developer News episode on Fridays
- dd7a929 feat: project-aware context detection and health checks (#39)
- 9316df3 feat: register friday-developer-news session-start hook
- 7b28fee feat: scaffold internal/shellhook with platform profile detection
- a54847a feat: structured context.md conventions with section validation (#45)
- b6522a7 feat: tutorial instructor skill and MCP tool enhancements (Phase 2+) (#13)
- d0850c2 feat: update TODO and context.md with completed tasks and CLI reference for AI agents
- 61e6d81 fix(.gitignore): add .playwright-mcp/ to ignore list
- d092c7c fix(adapter): add lookupArray for read-only traversal; strengthen empty-array removal test
- 7366cd3 fix(adapter): handle non-NotExist os.Stat errors in deleteFile
- 257a977 fix(adapter): reserve guidance-line bytes before TrimToBytes in ExportFileAndClip
- c139cd8 fix(adapter): show Trimmed status in stats table and route budget warning to stderr
- c4cb5be fix(adapter): skip stats for mcp-wire; strengthen budget test assertion
- a8b3a34 fix(adapter/test): use io.ReadAll for reliable stderr pipe drain in append-mode test
- 026b055 fix(cmd): check loadAdapters error in normal inject path; fix test cleanup completeness
- 219fbea fix(cmd): fix resp.Body leak, use os.Stdin for --detect prompt, fix i18n lang
- 5bdefb3 fix(cmd/hook): use Unicode status symbols; error when no hooks to install
- 99f8206 fix(content): explicit AdditivePosition clear; add before-position integration test
- 0185b9e fix(content): improve MergeWith call site comment; add non-additive override test
- a0d56d4 fix(content): merge Hooks from additive packs in MergeWith
- 08fe0fb fix(content): trailing newline in preamble.md; fix doc tree path
- 5c2e7ae fix(docs-site): address 6 plan review issues
- 94542d6 fix(docs-site): exclude Vue builtins from isCustomElement
- 2df0a50 fix(docs-site): fix sidebar layout with custom shellbar
- 7c63ee1 fix(docs-site): generate archive index pages to prevent 404
- d5d043b fix(docs-site): prevent OOM in CI by hoisting HTML5 Set and increasing heap
- bf61a5c fix(docs-site): use withBase() for public asset refs in Vue components
- f0cf40c fix(learning): handle mixed types in catalog Duration_in_hours field (#36)
- ba73ad7 fix(mcp): add URL validation, exec timeout; rewrite mcp-server.md
- af0f9f0 fix(mcp): improve news detail parsing, search ranking, and correlation
- fc7ee3a fix(mcp): improve search quality, error handling, and response consistency (#10)
- 755eb95 fix(release): add ids filter to scoop/homebrew sections in GoReleaser
- 68bf76e fix(release): use workflow_run trigger for tray workflow
- ddf60b2 fix(service): address code review findings
- d5f9ee7 fix(service): update Linux test assertion to match quoted binary path
- 863ce35 fix(sync): clarify Format field comment and tighten truncation test assertion
- 5408cea fix(sync): guard truncateTokens idx>=0; cap FetchMarker body at 1MiB; add edge-case tests
- cdd4d5e fix(sync): improve state reset safety and test coverage for marker round-trip
- 536aa41 fix(sync): pad Bubbletea view to prevent ghost lines from height changes
- 661f7a1 fix(sync): prevent changelog from reading failed company cache, remove dead markersNeeded field
- 9c2ac09 fix(sync): prevent ghost lines by capturing stderr and fixing view height
- c4c938b fix(sync): remove dead PrintPlainProgress start calls, fix markers failure reporting, restore company https check
- c9e4e6c fix(sync): simplify unknown-format fallback and improve tests
- 027bb80 fix(sync): use composite packID::index key in RunMarkerExpansion to prevent multi-pack collisions
- 86a7ed1 fix(sync): warn on invalid numeric marker attributes; test ExpandMarkers fence skip path
- f90bbcf fix(test): narrow omitempty assertion to tip: YAML key
- 5e4a8de fix(test): use UTC for timestamps in MostRecentSync test
- d4e713b fix(tip): use cmd.ErrOrStderr() for rotation warning
- 3ba8799 fix(tip): use sap-devs warning prefix, clarify session alias, strengthen random test
- 993e9a9 fix(tray): address code review findings
- 5b29500 fix(tray): prevent switch toggle from overlapping label text
- 9527cb1 fix(tray-binary): address code review findings
- caf9893 fix(tray-binary): fix sync state parsing, version display, add close button
- 0eba12c fix(ui): match items by packID+index; use stderr for errors; tidy go.mod
- 45a6fbf fix: add graphify-out directory to .gitignore
- 73d14a3 fix: address final code review findings for YouTube integration
- 0a79102 fix: address plan review issues for inject verbosity modes
- 5f93b22 fix: address plan review issues in content editing UI plan
- 5faf9cc fix: align regex with spec, fix AdapterName JSON tag
- c03d8a0 fix: correct TTY fd and add explicit markers guard in inject staleness block
- 35361c4 fix: correct cds-dk version detection pattern in tools.yaml
- 1ce385e fix: guard renderSectionContent against empty TrimPacks result
- 9a3c527 fix: handle $PAGER with arguments, expose -n flag on bare news command
- 9b8c356 fix: hide news hook from user-facing help output
- 5990c31 fix: instruct agents to include image URLs as clickable links
- 6293a27 fix: make TestTipSeed_RandomProducesDistinctValues robust against nanosecond collisions
- 9e22673 fix: pass full adapter to RenderSectionContentForTest, deduplicate innerStart
- 4be2ef4 fix: print "not found" message when no shell profiles exist
- adf7f66 fix: remove nil PacksBlock guard and fix Y/n prompt hang on empty input
- 203895a fix: rename copy shadow and add lipgloss version note in plan
- 60bf44f fix: scope gitignore binary patterns to repo root
- 5e75173 fix: send User-Agent header to avoid 403 from SAP Community RSS
- bb18af5 fix: skip "restart terminal" message when shell hook already present
- 9e998a6 fix: stat error handling, official-layer comment, and tilde fence support
- dff00c9 fix: surface OS error in tip uninstall instead of misleading "not found" message
- 381ef5c fix: thread io.Writer into openPager fallback, update stale newsYTMusic comment
- 2aa94bb fix: update MCP server tests for envelope response format
- 9f5bc0a fix: update community news RSS feed URLs and improve date parsing logic
- ad12f6c fix: use direct duration comparison instead of float64 in correlator
- 7134c13 refactor(adapter): use findSection in ReplaceSection
- c8cb1ff refactor(adapter/test): use two-line RunResult pattern for engine.Run call sites
- 5eae4ba refactor(content): add PackID re-stamp rationale comments; add MCPServer append test
- 73d58f4 refactor(content): hoist regexps to package-level, fix parameter shadowing
- 1c3b48f refactor(tutorials): simplify tutorial parsing by removing branch parameter
- e47ac04 refactor(ui): slim progress.go to marker types only, remove standalone Bubbletea program
- 5488e92 refactor: replace addShellHook with shellhook.Add in init wizard
- 92d4de1 remove btp tag for cap dev pack
- c7966f0 style(adapter): fix comment indentation in engine.go stats block
- a1d34e2 style(adapter): fix struct field alignment in Target
- 3042311 style(content): add blank line between Base and ContextMD in Pack struct
- 89d21a8 style(tip): sort stdlib imports
- 0a4a864 style: add blank line before mergeSamples doc comment
- 219b831 style: gofmt pack.go after adding AdditivePosition field
- b1f3b2e style: remove extra blank line in render.go
- a768975 test(adapter): add NotFound coverage and buf output assertions for uninstall engine tests
- c1d0644 test(adapter): strengthen ExportFileAndClip tests with file-content assertions
- 5f2f0a3 test(cmd): add --stats + --uninstall combination test to verify no mutual exclusion
- c09c9e9 test(content): assert lang=en also resolves to expanded file
- 20c813f test(content): fix PreambleMD test name style to match file convention
- 72553c6 test(content): verify additive pack cannot override base PreambleMD
- b544718 test(dynamic): add missing pom.xml CAP Java project type test
- 51d3084 test(dynamic): fix misleading test name and strengthen MCP missing-file test
- 56bdbd1 test(sync): assert LastFetched in NewFormatRoundTrips test
- fb4f383 test(sync): fix misleading comment and add file-deletion assertion in reset test
- 0035dc0 test: add TestAdd_MultipleHookBlocks for spec coverage
- a4c20c9 test: assert exact rune count in truncation test
- 26a67f5 test: strengthen TestExtractMarkdown_Empty assertion
- 7a12655 use random seed for tips in local dev mode