Skip to content

Commit a0aa9aa

Browse files
committed
Merge branch 'dev'
2 parents 050c009 + c28bd5c commit a0aa9aa

7 files changed

Lines changed: 116 additions & 49 deletions

File tree

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@
33
All notable changes to the Artemis VS Code extension will be documented in this file.
44

55

6+
## [0.2.4] - 2025-11-05
7+
8+
### Changed
9+
10+
- **Iris Chat Disclaimer**: Updated disclaimer text to accurately reflect that Iris has access to uncommitted changes
11+
- Changed from "Iris only has access to your submitted code" to "Iris has access to your uncommitted changes"
12+
- Added clickable settings link for quick access to privacy configuration
13+
- Users can now easily toggle the uncommitted changes feature directly from the chat interface
14+
615
## [0.2.3] - 2025-11-05
716

817
### Added

iris-thaumantias/CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@
33
All notable changes to the Artemis VS Code extension will be documented in this file.
44

55

6+
## [0.2.4] - 2025-11-05
7+
8+
### Changed
9+
10+
- **Iris Chat Disclaimer**: Updated disclaimer text to accurately reflect that Iris has access to uncommitted changes
11+
- Changed from "Iris only has access to your submitted code" to "Iris has access to your uncommitted changes"
12+
- Added clickable settings link for quick access to privacy configuration
13+
- Users can now easily toggle the uncommitted changes feature directly from the chat interface
14+
615
## [0.2.3] - 2025-11-05
716

817
### Added

iris-thaumantias/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

iris-thaumantias/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "iris-thaumantias",
33
"displayName": "Artemis - TUM",
44
"description": "Artemis brings interactive learning to life with instant, individual feedback on programming exercises, quizzes, modeling tasks, and more. This VS Code extension integrates Iris, an LLM-based virtual assistant that supports students with instant answers about exercises, lectures, and learning performance. Iris provides context-aware, personalized assistance for programming exercises, encouraging independent problem-solving through subtle hints and guiding questions instead of giving full solutions.",
5-
"version": "0.2.3",
5+
"version": "0.2.4",
66
"publisher": "aet-tum",
77
"license": "MIT",
88
"icon": "media/artemis-blue.png",

iris-thaumantias/src/views/provider/chatWebviewProvider.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,11 @@ export class ChatWebviewProvider implements vscode.WebviewViewProvider, vscode.D
375375
case 'messageFeedback':
376376
this._handleMessageFeedback(message);
377377
break;
378+
case 'openSettings':
379+
if (message.setting) {
380+
vscode.commands.executeCommand('workbench.action.openSettings', message.setting);
381+
}
382+
break;
378383
default:
379384
console.log('Unhandled message in chat view:', message);
380385
break;

iris-thaumantias/src/views/templates/irisChatView.ts

Lines changed: 67 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,54 @@
1-
import * as vscode from 'vscode';
2-
import { ThemeManager } from '../../themes';
3-
import { IconDefinitions } from '../../utils/iconDefinitions';
4-
import { StyleManager } from '../styles';
1+
import * as vscode from "vscode";
2+
import { ThemeManager } from "../../themes";
3+
import { IconDefinitions } from "../../utils/iconDefinitions";
4+
import { StyleManager } from "../styles";
55

66
export class IrisChatView {
7-
private _themeManager: ThemeManager;
8-
private _extensionContext: vscode.ExtensionContext;
9-
private _styleManager: StyleManager;
10-
11-
constructor(extensionContext: vscode.ExtensionContext, styleManager: StyleManager) {
12-
this._themeManager = new ThemeManager();
13-
this._extensionContext = extensionContext;
14-
this._styleManager = styleManager;
7+
private _themeManager: ThemeManager;
8+
private _extensionContext: vscode.ExtensionContext;
9+
private _styleManager: StyleManager;
10+
11+
constructor(
12+
extensionContext: vscode.ExtensionContext,
13+
styleManager: StyleManager
14+
) {
15+
this._themeManager = new ThemeManager();
16+
this._extensionContext = extensionContext;
17+
this._styleManager = styleManager;
18+
}
19+
20+
public generateHtml(
21+
webview?: vscode.Webview,
22+
showDiagnostics: boolean = false
23+
): string {
24+
const themeCSS = this._themeManager.getThemeCSS();
25+
const currentTheme = this._themeManager.getCurrentTheme();
26+
const styles = this._styleManager.getStyles(currentTheme, [
27+
"views/iris-chat.css",
28+
]);
29+
30+
const trashIcon = IconDefinitions.getIcon("trash");
31+
const stethoscopeIcon = IconDefinitions.getIcon("stethoscope");
32+
const questionMarkIcon = IconDefinitions.getIcon("question-mark");
33+
const refreshIcon = IconDefinitions.getIcon("refresh");
34+
const courseIcon = IconDefinitions.getIcon("course");
35+
const exerciseIcon = IconDefinitions.getIcon("exercise");
36+
const lockIcon = IconDefinitions.getIcon("shield");
37+
const workspaceIcon = IconDefinitions.getIcon("workspace");
38+
const checkIcon = `<svg viewBox="0 0 16 16" fill="currentColor"><path d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"/></svg>`;
39+
const plusIcon = `<svg viewBox="0 0 16 16" fill="currentColor"><path d="M8 2a.75.75 0 01.75.75v4.5h4.5a.75.75 0 010 1.5h-4.5v4.5a.75.75 0 01-1.5 0v-4.5h-4.5a.75.75 0 010-1.5h4.5v-4.5A.75.75 0 018 2z"/></svg>`;
40+
const switchIcon = `<svg viewBox="0 0 16 16" fill="currentColor"><path d="M8 2a.75.75 0 01.75.75v4.5h4.5a.75.75 0 010 1.5h-4.5v4.5a.75.75 0 01-1.5 0v-4.5h-4.5a.75.75 0 010-1.5h4.5v-4.5A.75.75 0 018 2z"/></svg>`;
41+
42+
// Get the path to the iris logo image
43+
let irisLogoSrc = "";
44+
if (webview) {
45+
const irisLogoUri = vscode.Uri.file(
46+
this._extensionContext.asAbsolutePath("media/iris-logo-big-left.png")
47+
);
48+
irisLogoSrc = webview.asWebviewUri(irisLogoUri).toString();
1549
}
1650

17-
public generateHtml(webview?: vscode.Webview, showDiagnostics: boolean = false): string {
18-
const themeCSS = this._themeManager.getThemeCSS();
19-
const currentTheme = this._themeManager.getCurrentTheme();
20-
const styles = this._styleManager.getStyles(currentTheme, [
21-
'views/iris-chat.css'
22-
]);
23-
24-
const trashIcon = IconDefinitions.getIcon('trash');
25-
const stethoscopeIcon = IconDefinitions.getIcon('stethoscope');
26-
const questionMarkIcon = IconDefinitions.getIcon('question-mark');
27-
const refreshIcon = IconDefinitions.getIcon('refresh');
28-
const courseIcon = IconDefinitions.getIcon('course');
29-
const exerciseIcon = IconDefinitions.getIcon('exercise');
30-
const lockIcon = IconDefinitions.getIcon('shield');
31-
const workspaceIcon = IconDefinitions.getIcon('workspace');
32-
const checkIcon = `<svg viewBox="0 0 16 16" fill="currentColor"><path d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"/></svg>`;
33-
const plusIcon = `<svg viewBox="0 0 16 16" fill="currentColor"><path d="M8 2a.75.75 0 01.75.75v4.5h4.5a.75.75 0 010 1.5h-4.5v4.5a.75.75 0 01-1.5 0v-4.5h-4.5a.75.75 0 010-1.5h4.5v-4.5A.75.75 0 018 2z"/></svg>`;
34-
const switchIcon = `<svg viewBox="0 0 16 16" fill="currentColor"><path d="M8 2a.75.75 0 01.75.75v4.5h4.5a.75.75 0 010 1.5h-4.5v4.5a.75.75 0 01-1.5 0v-4.5h-4.5a.75.75 0 010-1.5h4.5v-4.5A.75.75 0 018 2z"/></svg>`;
35-
36-
// Get the path to the iris logo image
37-
let irisLogoSrc = '';
38-
if (webview) {
39-
const irisLogoUri = vscode.Uri.file(
40-
this._extensionContext.asAbsolutePath('media/iris-logo-big-left.png')
41-
);
42-
irisLogoSrc = webview.asWebviewUri(irisLogoUri).toString();
43-
}
44-
45-
return `<!DOCTYPE html>
51+
return `<!DOCTYPE html>
4652
<html lang="en">
4753
<head>
4854
<meta charset="UTF-8">
@@ -56,7 +62,11 @@ export class IrisChatView {
5662
<body class="theme-${currentTheme}">
5763
<div class="chat-container">
5864
<div class="chat-header">
59-
${irisLogoSrc ? `<img src="${irisLogoSrc}" alt="Iris Logo" class="chat-header-logo" />` : ''}
65+
${
66+
irisLogoSrc
67+
? `<img src="${irisLogoSrc}" alt="Iris Logo" class="chat-header-logo" />`
68+
: ""
69+
}
6070
<h1 class="chat-title">Chat with Iris</h1>
6171
<button class="burger-menu" onclick="toggleSideMenu()" title="Menu">
6272
<div class="burger-icon">
@@ -165,7 +175,7 @@ export class IrisChatView {
165175
</div>
166176
<div class="iris-disclaimer-banner">
167177
<span class="disclaimer-text">
168-
Iris only has access to your submitted code.
178+
Iris has access to your uncommitted changes (<a href="#" onclick="openUncommittedChangesSettings(); return false;" class="settings-link">configurable</a>).
169179
Iris can make mistakes. Consider verifying important information.
170180
</span>
171181
</div>
@@ -244,7 +254,9 @@ export class IrisChatView {
244254
<div class="menu-item-description">Learn how contexts impact responses</div>
245255
</div>
246256
</div>
247-
${showDiagnostics ? `
257+
${
258+
showDiagnostics
259+
? `
248260
<div class="menu-item" onclick="openDiagnostics()">
249261
${stethoscopeIcon}
250262
<div class="menu-item-content">
@@ -259,7 +271,9 @@ export class IrisChatView {
259271
<div class="menu-item-description">View raw Artemis session data</div>
260272
</div>
261273
</div>
262-
` : ''}
274+
`
275+
: ""
276+
}
263277
</div>
264278
265279
<div class="menu-section">
@@ -309,6 +323,13 @@ export class IrisChatView {
309323
document.getElementById('helpPopup').classList.remove('open');
310324
};
311325
326+
window.openUncommittedChangesSettings = function() {
327+
vscode.postMessage({
328+
command: 'openSettings',
329+
setting: 'artemis.iris.sendUncommittedChanges'
330+
});
331+
};
332+
312333
let irisState = {
313334
context: null,
314335
activeSessionId: null,
@@ -1078,5 +1099,5 @@ export class IrisChatView {
10781099
</script>
10791100
</body>
10801101
</html>`;
1081-
}
1102+
}
10821103
}

scripts/prepare-release.sh

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,33 @@ cd "${ROOT_DIR}/${EXTENSION_DIR}"
115115
# Run the package script
116116
npm run package
117117

118+
# Temporarily downgrade @types/vscode for VSIX packaging to match engines.vscode
119+
print_step "Temporarily adjusting @types/vscode for packaging..."
120+
ORIGINAL_TYPES_VERSION=$(grep -o '"@types/vscode": "[^"]*"' package.json | cut -d'"' -f4)
121+
if [[ "$OSTYPE" == "darwin"* ]]; then
122+
sed -i '' 's/"@types\/vscode": "[^"]*"/"@types\/vscode": "1.97.0"/' package.json
123+
else
124+
sed -i 's/"@types\/vscode": "[^"]*"/"@types\/vscode": "1.97.0"/' package.json
125+
fi
126+
127+
# Install the downgraded version temporarily
128+
npm install --silent
129+
118130
# Create VSIX file
119131
print_step "Creating VSIX package..."
120132
npx @vscode/vsce package
121133

134+
# Restore original @types/vscode version
135+
print_step "Restoring @types/vscode to ${ORIGINAL_TYPES_VERSION}..."
136+
if [[ "$OSTYPE" == "darwin"* ]]; then
137+
sed -i '' "s/\"@types\/vscode\": \"[^\"]*\"/\"@types\/vscode\": \"${ORIGINAL_TYPES_VERSION}\"/" package.json
138+
else
139+
sed -i "s/\"@types\/vscode\": \"[^\"]*\"/\"@types\/vscode\": \"${ORIGINAL_TYPES_VERSION}\"/" package.json
140+
fi
141+
142+
# Reinstall with original version
143+
npm install --silent
144+
122145
VSIX_FILE="${ROOT_DIR}/${EXTENSION_DIR}/${EXTENSION_DIR}-${NEW_VERSION}.vsix"
123146

124147
if [ -f "$VSIX_FILE" ]; then

0 commit comments

Comments
 (0)