Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 56 additions & 56 deletions .github/workflows/main_catoconsting.yml
Original file line number Diff line number Diff line change
@@ -1,56 +1,56 @@
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions
name: Build and deploy JAR app to Azure Web App - Catoconsting
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build:
runs-on: windows-latest
permissions:
contents: read #This is required for actions/checkout
steps:
- uses: actions/checkout@v4
- name: Set up Java version
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'microsoft'
- name: Build with Maven
run: mvn clean install
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v4
with:
name: java-app
path: '${{ github.workspace }}/target/*.jar'
deploy:
runs-on: windows-latest
needs: build
steps:
- name: Download artifact from build job
uses: actions/download-artifact@v4
with:
name: java-app
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: 'Catoconsting'
slot-name: 'Production'
package: '*.jar'
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_2294C70C1BD64F72AAF4A8ED0F6CAEF6 }}
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions

name: Build and deploy JAR app to Azure Web App - Catoconsting

on:
push:
branches:
- main
workflow_dispatch:

jobs:
build:
runs-on: windows-latest
permissions:
contents: read #This is required for actions/checkout

steps:
- uses: actions/checkout@v4

- name: Set up Java version
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'microsoft'

- name: Build with Maven
run: mvn clean install

- name: Upload artifact for deployment job
uses: actions/upload-artifact@v4
with:
name: java-app
path: '${{ github.workspace }}/target/*.jar'

deploy:
runs-on: windows-latest
needs: build


steps:
- name: Download artifact from build job
uses: actions/download-artifact@v4
with:
name: java-app

- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: 'Catoconsting'
slot-name: 'Production'
package: '*.jar'

publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_2294C70C1BD64F72AAF4A8ED0F6CAEF6 }}

136 changes: 68 additions & 68 deletions .specstory/.what-is-this.md
Original file line number Diff line number Diff line change
@@ -1,69 +1,69 @@
# SpecStory Artifacts Directory
This directory is automatically created and maintained by the SpecStory extension to preserve your AI chat history.
## What's Here?
- `.specstory/history`: Contains auto-saved markdown files of your AI coding sessions
- Each file represents a separate AI chat session
- If you enable auto-save, files are automatically updated as you work
- You can enable/disable the auto-save feature in the SpecStory settings, it is disabled by default
- `.specstory/.project.json`: Contains the persistent project identity for the current workspace
- This file is only present if you enable AI rules derivation
- This is used to provide consistent project identity of your project, even as the workspace is moved or renamed
- `.specstory/ai_rules_backups`: Contains backups of the `.cursor/rules/derived-cursor-rules.mdc` or the `.github/copilot-instructions.md` file
- Backups are automatically created each time the `.cursor/rules/derived-cursor-rules.mdc` or the `.github/copilot-instructions.md` file is updated
- You can enable/disable the AI Rules derivation feature in the SpecStory settings, it is disabled by default
- `.specstory/.gitignore`: Contains directives to exclude non-essential contents of the `.specstory` directory from version control
- Add `/history` to exclude the auto-saved chat history from version control
## Valuable Uses
- Capture: Keep your context window up-to-date when starting new Chat/Composer sessions via @ references
- Search: For previous prompts and code snippets
- Learn: Meta-analyze your patterns and learn from your past experiences
- Derive: Keep the AI on course with your past decisions by automatically deriving rules from your AI interactions
## Version Control
We recommend keeping this directory under version control to maintain a history of your AI interactions. However, if you prefer not to version these files, you can exclude them by adding this to your `.gitignore`:
```
.specstory/**
```
We recommend __not__ keeping the `.specstory/ai_rules_backups` directory under version control if you are already using git to version your AI rules, and committing regularly. You can exclude it by adding this to your `.gitignore`:
```
.specstory/ai_rules_backups
```
## Searching Your Codebase
When searching your codebase, search results may include your previous AI coding interactions. To focus solely on your actual code files, you can exclude the AI interaction history from search results.
To exclude AI interaction history:
1. Open the "Find in Files" search in Cursor or VSCode (Cmd/Ctrl + Shift + F)
2. Navigate to the "files to exclude" section
3. Add the following pattern:
```
.specstory/*
```
This will ensure your searches only return results from your working codebase files.
## Notes
- Auto-save only works when Cursor or VSCode flushes sqlite database data to disk. This results in a small delay after the AI response is complete before SpecStory can save the history.
## Settings
You can control auto-saving behavior in Cursor or VSCode:
1. Open Cursor/Code → Settings → VS Code Settings (Cmd/Ctrl + ,)
2. Search for "SpecStory"
3. Find "Auto Save" setting to enable/disable
# SpecStory Artifacts Directory

This directory is automatically created and maintained by the SpecStory extension to preserve your AI chat history.

## What's Here?

- `.specstory/history`: Contains auto-saved markdown files of your AI coding sessions
- Each file represents a separate AI chat session
- If you enable auto-save, files are automatically updated as you work
- You can enable/disable the auto-save feature in the SpecStory settings, it is disabled by default
- `.specstory/.project.json`: Contains the persistent project identity for the current workspace
- This file is only present if you enable AI rules derivation
- This is used to provide consistent project identity of your project, even as the workspace is moved or renamed
- `.specstory/ai_rules_backups`: Contains backups of the `.cursor/rules/derived-cursor-rules.mdc` or the `.github/copilot-instructions.md` file
- Backups are automatically created each time the `.cursor/rules/derived-cursor-rules.mdc` or the `.github/copilot-instructions.md` file is updated
- You can enable/disable the AI Rules derivation feature in the SpecStory settings, it is disabled by default
- `.specstory/.gitignore`: Contains directives to exclude non-essential contents of the `.specstory` directory from version control
- Add `/history` to exclude the auto-saved chat history from version control

## Valuable Uses

- Capture: Keep your context window up-to-date when starting new Chat/Composer sessions via @ references
- Search: For previous prompts and code snippets
- Learn: Meta-analyze your patterns and learn from your past experiences
- Derive: Keep the AI on course with your past decisions by automatically deriving rules from your AI interactions

## Version Control

We recommend keeping this directory under version control to maintain a history of your AI interactions. However, if you prefer not to version these files, you can exclude them by adding this to your `.gitignore`:

```
.specstory/**
```

We recommend __not__ keeping the `.specstory/ai_rules_backups` directory under version control if you are already using git to version your AI rules, and committing regularly. You can exclude it by adding this to your `.gitignore`:

```
.specstory/ai_rules_backups
```

## Searching Your Codebase

When searching your codebase, search results may include your previous AI coding interactions. To focus solely on your actual code files, you can exclude the AI interaction history from search results.

To exclude AI interaction history:

1. Open the "Find in Files" search in Cursor or VSCode (Cmd/Ctrl + Shift + F)
2. Navigate to the "files to exclude" section
3. Add the following pattern:

```
.specstory/*
```

This will ensure your searches only return results from your working codebase files.

## Notes

- Auto-save only works when Cursor or VSCode flushes sqlite database data to disk. This results in a small delay after the AI response is complete before SpecStory can save the history.

## Settings

You can control auto-saving behavior in Cursor or VSCode:

1. Open Cursor/Code → Settings → VS Code Settings (Cmd/Ctrl + ,)
2. Search for "SpecStory"
3. Find "Auto Save" setting to enable/disable

Auto-save occurs when changes are detected in the sqlite database, or every 2 minutes as a safety net.
32 changes: 16 additions & 16 deletions .specstory/history/2025-07-06_16-11Z-install-jave.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
<!-- Generated by SpecStory -->
# install jave (2025-07-06 16:11Z)
_**User**_
install jave
---
_**Assistant**_
I'll help you install Java. Let me check your current workspace and system to provide the best installation approach.
---
<!-- Generated by SpecStory -->

# install jave (2025-07-06 16:11Z)

_**User**_

install jave

---

_**Assistant**_

I'll help you install Java. Let me check your current workspace and system to provide the best installation approach.

---

113 changes: 113 additions & 0 deletions lib/common.psm1
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
<#
.SYNOPSIS
Common module for Catoconsting PowerShell setup scripts
.DESCRIPTION
Contains shared functions and utilities used across PowerShell setup scripts
.NOTES
Usage: Import this module from other scripts
Import-Module "$PSScriptRoot\lib\common.psm1" -Force
#>

# Logging function
# Usage: Write-Log "message" ["level"]
function Write-Log {
param([string]$Message, [string]$Level = "INFO")
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$logMessage = "[$timestamp] [$Level] $Message"
Write-Host $logMessage
if ($LogFile) {
Add-Content -Path $LogFile -Value $logMessage
}
}

# Check if running as Administrator
# Returns $true if running as admin, $false otherwise
function Test-Administrator {
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
return $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
}

# Require Administrator privileges
# Throws an error if not running as Administrator
function Require-Administrator {
if (-NOT (Test-Administrator)) {
Write-Log "This script requires Administrator privileges" "ERROR"
throw "Administrator privileges required"
}
}

# Install Chocolatey package manager if not present
function Install-Chocolatey {
Write-Log "Checking for Chocolatey package manager..."
if (-not (Get-Command choco -ErrorAction SilentlyContinue)) {
Write-Log "Installing Chocolatey package manager..."
try {
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
Write-Log "Chocolatey installed successfully" "SUCCESS"

# Refresh environment variables
Update-EnvironmentPath
} catch {
Write-Log "Failed to install Chocolatey: $($_.Exception.Message)" "ERROR"
throw
}
} else {
Write-Log "Chocolatey is already installed" "SUCCESS"
}
}

# Refresh environment PATH variable
function Update-EnvironmentPath {
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
}

# Install Java JDK 17 (Microsoft distribution)
function Install-JavaJDK17 {
Write-Log "Checking for Java JDK 17..."
$javaVersion = $null
try {
$javaVersion = & java -version 2>&1 | Select-String "version" | ForEach-Object { $_.ToString() }
} catch {
Write-Log "Java not found"
}

if (-not $javaVersion -or $javaVersion -notmatch "17\.") {
Write-Log "Installing Microsoft OpenJDK 17..."
try {
choco install microsoft-openjdk17 -y
Write-Log "Java JDK 17 installed successfully" "SUCCESS"

# Refresh environment
Update-EnvironmentPath
} catch {
Write-Log "Failed to install Java JDK 17: $($_.Exception.Message)" "ERROR"
}
} else {
Write-Log "Java JDK 17 is already installed: $javaVersion" "SUCCESS"
}
}

# Set JAVA_HOME environment variable if not set
function Set-JavaHome {
if (-not $env:JAVA_HOME) {
Write-Log "Setting JAVA_HOME environment variable..."
$javaPath = (Get-Command java -ErrorAction SilentlyContinue).Source
if ($javaPath) {
$javaHome = Split-Path (Split-Path $javaPath -Parent) -Parent
[System.Environment]::SetEnvironmentVariable("JAVA_HOME", $javaHome, "Machine")
$env:JAVA_HOME = $javaHome
Write-Log "JAVA_HOME set to: $javaHome" "SUCCESS"
}
}
}

# Export module members
Export-ModuleMember -Function Write-Log
Export-ModuleMember -Function Test-Administrator
Export-ModuleMember -Function Require-Administrator
Export-ModuleMember -Function Install-Chocolatey
Export-ModuleMember -Function Update-EnvironmentPath
Export-ModuleMember -Function Install-JavaJDK17
Export-ModuleMember -Function Set-JavaHome
Loading